繁体   English   中英

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

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

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