我想按列别名对sql语句进行分组。实质上,我希望以下内容在逻辑上能够正常运行,但不允许按使用as创建的列进行分组。(无效的列名)。有人提示吗?
SELECT CASE WHEN Date IS NULL THEN 'EMPTY' ELSE CASE WHEN Date = '1/1/1753' THEN 'UNAVAILABLE' ELSE CAST(MONTH(Date) as varchar(MAX))+ '/'+ CAST(YEAR(Date) as varchar(MAX)) END END AS MonthYear FROM tbltablename GROUP BY MonthYear
对于立即出现的分组问题,您需要使用相同的表达式对新列进行分组或对新列进行计算,或者从派生表中使用它。
SELECT MonthYear FROM ( SELECT Columns, CASE WHEN Date IS NULL THEN 'EMPTY' ELSE CASE WHEN Date = '1/1/1753' THEN 'UNAVAILABLE' ELSE CAST(MONTH(Date) as varchar(2))+ '/'+ CAST(YEAR(Date) as varchar(4)) END END AS MonthYear FROM tbltablename) T GROUP BY MonthYear
另一方面,VARCHAR(MAX)如果不需要,则不应使用。
VARCHAR(MAX)