【发布时间】:2014-07-13 10:32:18
【问题描述】:
我正在尝试使用 if 语句创建 sql server 过程。 我是 ms sql 服务器的新手,但是我尝试使用以下语句,但它给了我以下错误 Msg 116, Level 16, State 1, Procedure te, Line 9 不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。
这是我写的代码
CREATE PROCEDURE test as
BEGIN
SET NOCOUNT ON;
if (select COUNT(load),load,contractor_id from [test].[dbo].[cont]
group by load,contractor_id
having load = (select MIN(load)from [test].[dbo].[cont])
) > 1
begin
SELECT top 1 COUNT(*),load ,contractor_id,name
FROM [test].[dbo].[cont]
group by load,contractor_id,name
having load = (select MIN(load)from [test].[dbo].[cont])
ORDER BY NEWID()
end
ELSE
BEGIN
SELECT top 1 COUNT(*),load ,contractor_id,name
FROM [test].[dbo].[cont]
group by load,contractor_id,name
having load = (select MIN(load)from [test].[dbo].[cont])
END
END
GO
谁能帮忙
【问题讨论】:
-
你为什么不只是运行内部查询的
ORDER BY NEWID()变体并摆脱所有条件代码 - 除非我没有发现其他一些差异,你似乎正在做如果碰巧查询只返回一行,则需要做很多工作来避免应用ORDER BY子句,这似乎是一项毫无意义的工作。
标签: sql-server