简体   繁体   English

案例陈述顺序 - 无效的列名“年月”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM