求一个统计字段值的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 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的行列转行即可