首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

统计字段值的SQL语句

2012-03-22 
求一个统计字段值的SQL语句数据表 STUIDTIMENOUNOY12012-1-42522012-1-47232012-1-85642012-1-189152012-1

求一个统计字段值的SQL语句
数据表 STU
ID TIME NOU NOY  
1 2012-1-4 2 5

2 2012-1-4 7 2

3 2012-1-8 5 6

4 2012-1-18 9 1

5 2012-1-28 6 6

怎么查出 NOU和NOY一个月每天的数量 这样的结果
NAME 1 2 3 4 ....8 9 10....18.......28 29 30 31
NOU 9 5 9 6
NOY 9 5 9 6

谢谢

[解决办法]

SQL code
SQL codeselect 'NOU' as NAME,sum(case when day(TIME)=1 then NOU else 0 end) as [1],sum(case when day(TIME)=2 then NOU else 0 end) as [2],......sum(case when day(TIME)=31 then NOU else 0 end) as [31]from STUunion allselect 'NOY' as NAME,sum(case when day(TIME)=1 then NOY else 0 end) as [1],sum(case when day(TIME)=2 then NOY else 0 end) as [2],......sum(case when day(TIME)=31 then NOY else 0 end) as [31]from STU
[解决办法]
用 for xml path()
[解决办法]
你这个是典型的行列转换问题,如果数据库的兼容行在sql server 2005以下(不包含Sql server 2005)的话,可以使用1楼的方法,如果兼容性在sql server 2005和sql server 2005以上的话,可以使用pivot语句实现。具体可以参照:http://msdn.microsoft.com/en-us/library/ms177410.aspx或http://www.cnblogs.com/zhangzt/archive/2010/07/29/1787825.html
[解决办法]
select time,sum(NOU), sum(NOY) from Table group by TIME
再通过SQL2005的行列转行即可

热点排行