[英]Case statement order by - invalid column name 'yearmonth'
My query doesn't recognize the column when I use a case statement, but does when I don't.当我使用 case 语句时,我的查询无法识别该列,但在我不使用时却可以。 I really need to use the case statement.我真的需要使用case语句。 Can you please let me know why it is wrong.你能告诉我为什么它是错的。 Thank you very much.非常感谢。
i will update what i am trying to do thank you我会更新我正在尝试做的事情谢谢
You should use your Table Column Name Instead of using its yearmonth
ALIAS NAME .您应该使用Table Column Name而不是使用它的yearmonth
ALIAS NAME 。
Alias name is just for renaming a table or a column temporarily by giving another 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)
Also, You can try this:另外,你可以试试这个:
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 Server doesn't recognize the column alias when it is in an expression. SQL 服务器在表达式中无法识别列别名。 Sad.伤心。
But there is an easier way:但是有一个更简单的方法:
order by min(SRVC_DT)
This just orders by the minimum of SRVC_DT
in each group.这只是按每组中SRVC_DT
的最小值排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.