[英]“Invalid Column Name” error in query with order by case statement and outer select
[英]Case statement order by - invalid column name 'yearmonth'
当我使用 case 语句时,我的查询无法识别该列,但在我不使用时却可以。 我真的需要使用case语句。 你能告诉我为什么它是错的。 非常感谢。
我会更新我正在尝试做的事情谢谢
您应该使用Table Column Name而不是使用它的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
SQL 服务器在表达式中无法识别列别名。 伤心。
但是有一个更简单的方法:
order by min(SRVC_DT)
这只是按每组中SRVC_DT
的最小值排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.