现在的位置: 首页 > 综合 > 正文

SQL Server2005支持Group by中有计算语法

2012年08月11日 ⁄ 综合 ⁄ 共 644字 ⁄ 字号 评论关闭

 

SELECT COUNT(1),CASE WHEN LEFT(USE_WORKNO,2)>80 THEN '19'+LEFT(USE_WORKNO,2ELSE '20'+LEFT(USE_WORKNO,2END AS A 
FROM TBLSYSUSER WHERE USE_WORKNO <>'' GROUP BY LEFT(USE_WORKNO,2ORDER BY A

这条SQL语句在MS SQL Server2000中执行报错

服务器: 消息 8120,级别 16,状态 1,行 1
列 
'TBLSYSUSER.USE_WORKNO' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 
8120,级别 16,状态 1,行 1
列 
'TBLSYSUSER.USE_WORKNO' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

在MS SQL Server2005 CTP版本中执行正常

后来改为

SELECT COUNT(1),A FROM (SELECT CASE WHEN LEFT(USE_WORKNO,2)>80 THEN '19'+LEFT(USE_WORKNO,2ELSE '20'+LEFT(USE_WORKNO,2END AS A  FROM TBLSYSUSER WHERE USE_WORKNO <>''AS B GROUP BY A ORDER BY A

都正常执行!

抱歉!评论已关闭.