2014 相信自己能做的更好

---------------------------------------------------------------------------------------------------------
Everything is possible    Nothing is Impossible     
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2005-08-24 18:47  Arping.Net探索  阅读(1354)  评论(0编辑  收藏  举报

 

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

都正常执行!