案例语句顺序 - 无效的列名'yearmonth'



当我使用case语句时,我的查询不识别列,但当我不使用时,查询可以识别列。我真的需要用case语句。你能告诉我为什么是错的吗?非常感谢。

我会更新我正在努力做的,谢谢你

SQL Server在表达式中不识别列别名。伤心。

但是有一个更简单的方法:

order by min(SRVC_DT)

这只是按SRVC_DT在每组中的最小值排序。

您应该使用您的表列名而不是使用yearmonthALIAS 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 

最新更新