当我使用case语句时,我的查询不识别列,但当我不使用时,查询可以识别列。我真的需要用case语句。你能告诉我为什么是错的吗?非常感谢。
我会更新我正在努力做的,谢谢你
SQL Server在表达式中不识别列别名。伤心。
但是有一个更简单的方法:
order by min(SRVC_DT)
这只是按SRVC_DT
在每组中的最小值排序。
您应该使用您的表列名而不是使用yearmonth
ALIAS NAME.
别名只是为了给一个表或一个列临时重命名。
SELECT (LEFT(DATENAME(MONTH,SRVC_DT),3) + '-' + CAST(YEAR(SRVC_DT) AS NCHAR)) AS YEARMONTH
FROM IRX_MAIN.ESA.VW_CLM_PHRMCY_DLY_MSTR
WHERE DATEDIFF(MM, SRVC_DT, GETDATE()) BETWEEN 1 AND 12
ORDER BY (CASE (LEFT(DATENAME(MONTH,SRVC_DT),3) + '-' + CAST(YEAR(SRVC_DT) AS NCHAR)) WHEN 'JUL-2020' THEN 7
WHEN 'AUG2020' THEN 8
WHEN 'SEP2020' THEN 9
WHEN 'OCT2020' THEN 10
WHEN 'NOV2020' THEN 11
WHEN 'DEC2020' THEN 12 END)
还有,你可以试试这个:
SELECT (LEFT(DATENAME(MONTH,SRVC_DT),3) + '-' + CAST(YEAR(SRVC_DT) AS NCHAR)) AS YEARMONTH
FROM IRX_MAIN.ESA.VW_CLM_PHRMCY_DLY_MSTR
WHERE DATEDIFF(MM, SRVC_DT, GETDATE()) BETWEEN 1 AND 12
ORDER BY SRVC_DT