求一高难度SQL语句解决思路
求一高难度SQL语句
------解决方案--------------------
算了,写完吧,这哪叫高难度。。基础技能啊
--现有表如下
create table TheData(id int,name varchar(20),fillCount int ,fillMonth int );
/*
id---编号
name---名称
fillCount---填写数量
fillMonth---填写月份
*/
insert into TheData values(2322,'情况表',12,7);
insert into TheData values(2322,'情况表',6,8);
insert into TheData values(25,'新表',12,5);
insert into TheData values(25,'新表',6,9);
--需要得到如下数据:
--id name 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
--2322 情况表 0 0 0 0 0 0 12 6 0 0 0 0
--25 情况表 0 0 0 0 12 0 0 0 6 0 0 0
--求高手指点
------解决方案--------------------
算了,写完吧,这哪叫高难度。。基础技能啊
--create table TheData(id int,name varchar(20),fillCount int ,fillMonth int );
--/*
--id---编号
--name---名称
--fillCount---填写数量
--fillMonth---填写月份
--*/
--insert into TheData values(2322,'情况表',12,7);
--insert into TheData values(2322,'情况表',6,8);
--insert into TheData values(25,'新表',12,5);
--insert into TheData values(25,'新表',6,9);
SELECT id,name,'1月'=MAX(CASE fillMonth when 1 THEN fillCount ELSE 0 END ),'2月'=MAX(CASE fillMonth when 2 THEN fillCount ELSE 0 END ),
'3月'=MAX(CASE fillMonth when 3 THEN fillCount ELSE 0 END ),'4月'=MAX(CASE fillMonth when 4 THEN fillCount ELSE 0 END ),
'5月'=MAX(CASE fillMonth when 5 THEN fillCount ELSE 0 END ),'6月'=MAX(CASE fillMonth when 6 THEN fillCount ELSE 0 END ),
'7月'=MAX(CASE fillMonth when 7 THEN fillCount ELSE 0 END ),'8月'=MAX(CASE fillMonth when 8 THEN fillCount ELSE 0 END ),
'9月'=MAX(CASE fillMonth when 9 THEN fillCount ELSE 0 END ),'10月'=MAX(CASE fillMonth when 10 THEN fillCount ELSE 0 END ),
'11月'=MAX(CASE fillMonth when 11 THEN fillCount ELSE 0 END ),'12月'=MAX(CASE fillMonth when 12 THEN fillCount ELSE 0 END )
FROM TheData
GROUP BY id,name
/*
id name 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
----------- -------------------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
2322 情况表 0 0 0 0 0 0 12 6 0 0 0 0
25 新表 0 0 0 0 12 0 0 0 6 0 0 0