SELECT COUNT(1),CASE WHEN LEFT(USE_WORKNO,2)>80 THEN '19'+LEFT(USE_WORKNO,2) ELSE '20'+LEFT(USE_WORKNO,2) END AS A
FROM TBLSYSUSER WHERE USE_WORKNO <>'' GROUP BY LEFT(USE_WORKNO,2) ORDER BY A
FROM TBLSYSUSER WHERE USE_WORKNO <>'' GROUP BY LEFT(USE_WORKNO,2) ORDER BY A
这条SQL语句在MS SQL Server2000中执行报错
服务器: 消息 8120,级别 16,状态 1,行 1
列 'TBLSYSUSER.USE_WORKNO' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 'TBLSYSUSER.USE_WORKNO' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
列 '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,2) ELSE '20'+LEFT(USE_WORKNO,2) END AS A FROM TBLSYSUSER WHERE USE_WORKNO <>'') AS B GROUP BY A ORDER BY A
都正常执行!