select *
FROM ##RawTrans
ORDER BY GroupBy ASC,
CASE WHEN @RepType = 'Emp' THEN
CASE WHEN @OrderBy = 0 THEN [Code] ELSE [Name] END, [Date], [Time]
CASE WHEN @RepType = 'ClockEmp' THEN
[Clock], CASE WHEN @OrderBy = 0 THEN [Code] ELSE [Name] END, [Date], [Time]
CASE WHEN @RepType = 'EmpClock' THEN
CASE WHEN @OrderBy = 0 THEN [Code] ELSE [Name] END, [Clock], [Date], [Time]
END
有人可以帮我知道这段代码中我的错误在哪里吗?
我在第7行收到错误
[',''附近的语法不正确
GroupBy是在此代码之前声明的变量
答案 0 :(得分:6)
case
表达式必须返回单个值,不能让它返回以逗号分隔的字段名称。
您必须为每个值设置case
,例如:
ORDER BY
GroupBy ASC,
CASE WHEN @RepType = 'ClockEmp' THEN [Clock] ELSE '' end,
CASE WHEN @OrderBy = 0 THEN [Code] ELSE [Name] END,
CASE WHEN @RepType = 'EmpClock' THEN [Clock] ELSE '' end,
[Date],
[Time]
答案 1 :(得分:2)
CASE
内有CASE
,但不会同时结束这两个:
CASE WHEN @RepType = 'Emp' THEN
CASE WHEN @OrderBy = 0 THEN [Code] ELSE [Name] END,
你结束了第二种情况,但不是你的第一种情况。
如果您打算按照不同的标准进行组织,则需要重新组织CASE语句,以便它们一次影响一个列顺序选择。