写一条查询SQL语句,要求按年月查询 竖列表头年份 横列表头12个月份?

写一条查询SQL语句,要求按年月查询 竖列表头年份 横列表头12个月份?
例如: 一月 二月 。。。十二月(横列表头)
2010年 数据1 数据2(数据必须在这年月中).....
2011年
2012年
。。。
(竖列表头)
表里面时间字段time1='2010-01-02 00:00:00',没有具体的年份、月份 需要自己拆分开查询, 怎么查?

这样:
select 年份=convert(varchar(4),year(max(time1)))+'年',
一月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=1),
二月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=2),
三月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=3),
四月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=4),
五月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=5),
六月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=6),
七月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=7),
八月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=8),
九月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=9),
十月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=10),
十一月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=11),
十二月=(select sum(数据) from tablename a where year(a.time1)=year(tablename.time1) and month(a.time1)=12)
FROM tablename
group by year(time1)
以上语句测式通过。可以直接复制使用,如果具体表名,字段名称不同,直接替换表名和列名即可。(表名:TABLENAME,数据字段:数据,时间字段:TIME1)
注意,输入第一个月后,后面的月份复制就行了,然后改一下月份数即可。
之所以使用SUM统计函数,是为了防止一个年月的数据出现多次,如果出现一次,就可以不用这个函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-15
你这里所以的横列表头就是数据库里的字段名,
你这里的竖列表头有值,但是没有字段名,可以命名为年份
这个表还需要起个名字,就叫表A吧
这样就可以用sql语句查询了
select 一月,二月 from 表A where 年份='2010年'

可以用year(年份)=2010追问

表里面时间字段time1='2010-01-02 00:00:00',没有具体的年份、月份 需要自己拆分开查询, 怎么查?

追答

year(time1)=2010 and month(time1)=1

本回答被提问者采纳
相似回答