在ORDER BY中使用case语句 - "''附近的语法不正确',"

Nej*_*the 1 sql sql-server

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
Run Code Online (Sandbox Code Playgroud)

有人可以帮我知道这段代码中的错误在哪里?

我在第7行收到错误

[',''附近的语法不正确]

GroupBy是在此代码之前声明的变量

Guf*_*ffa 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]
Run Code Online (Sandbox Code Playgroud)