首页 > 解决方案 > 如何在我的 ORDER BY 语法中解决与 CASE 语句相关的这个错误?

问题描述

我正在使用 SQL Server 2014 并且正在查询链接服务器。

我的 T-SQL 查询如下:

USE MyDatabase

SELECT 

[EMP_CODE],
[NAME],
[ADDRESS]

FROM [xxx.xxx.xx].[HR].[dbo].[EMPLOYEE]

WHERE [EMP_CODE] IN (
'A0025',
'A0045',
'B0008',
 ...
 ...
 'A0096' )

ORDER BY
CASE [EMP_CODE]

WHEN 'A0025' THEN 1
WHEN 'A0045' THEN 2
WHEN 'B0008' THEN 3
...
...
WHEN 'A0096' THEN 68

END

我的问题是运行上述 T_SQL 查询时收到以下错误消息:

"Case expressions may only be nested to level 10."

我怎样才能绕过这个错误?

标签: sqlsql-server

解决方案


我不知道嵌套case表达式的来源。但另一种配方将使用JOIN

SELECT . . .
FROM [xxx.xxx.xx].[HR].[dbo].[EMPLOYEE] e LEFT JOIN
     (VALUES ('A0025', 1), ('A0045', 2), ('B0008', 3), . . .)
     ) v(emp_code, ord)
     ON e.emp_code = v.emp_code
ORDER BY COALESCE(v.ord, 1000000)

推荐阅读