表A有品号,客户简称,客户品号,品名,规格,预交货日,订单数量,我想按预交货日得到品号,客户简称,客户品号,品名,规格,一月订单数量,二月订单数量。十二月订单数量,其中会有个别月份没有此品号的订单,可以用NULL代替?谢谢各位大侠
解决方案 »
- 如何写这个语句
- 请教更新语句
- 取制定位置的纪录时发生错误,谁能帮忙看看~~
- select * from tb where a=xx and b=XXX这样的句子,是不是在A 和 B列上建立一个聚集组合索引才查起来最快?
- insert into 料库表 (物资编号) select 物资编号 from b,怎么把表库中转换成字符型再插入?
- 在SQL SERVER2000客户端上调试JSP文件,可是以用程序连数据库连不上,但是,可以在企业管理器是可以打开数据库的
- 两个表查询的问题!!!!!1
- xml字段查询的问题
- 数据库设计--关于用户和权限部分
- 数据库邮箱smtp设置
- 视图与索引的问题.
- 数据库配置问题
id data month
001 11 1
001 12 2
001 13 3
001 14 4
001 15 5
001 16 6
001 17 7
001 18 8
001 19 9
001 110 10
001 111 11
001 112 12
002 21 1
002 22 2
002 23 3
002 24 4
002 25 5
002 26 6
002 27 7
002 28 8
002 29 9
002 210 10
002 211 11
002 212 12
要实现如下结果:
人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
001 11 12 13 14 15 16 17 18 19 110 111 112
002 21 22 23 24 25 26 27 28 29 210 211 212create table 表A
(
id char(3),
data int,
month int
)
insert into 表A(id,data,month) values('001',11,1)
insert into 表A(id,data,month) values('001',12,2)
insert into 表A(id,data,month) values('001',13,3)
insert into 表A(id,data,month) values('001',14,4)
insert into 表A(id,data,month) values('001',15,5)
insert into 表A(id,data,month) values('001',16,6)
insert into 表A(id,data,month) values('001',17,7)
insert into 表A(id,data,month) values('001',18,8)
insert into 表A(id,data,month) values('001',19,9)
insert into 表A(id,data,month) values('001',110,10)
insert into 表A(id,data,month) values('001',111,11)
insert into 表A(id,data,month) values('001',112,12)
insert into 表A(id,data,month) values('002',21,1)
insert into 表A(id,data,month) values('002',22,2)
insert into 表A(id,data,month) values('002',23,3)
insert into 表A(id,data,month) values('002',24,4)
insert into 表A(id,data,month) values('002',25,5)
insert into 表A(id,data,month) values('002',26,6)
insert into 表A(id,data,month) values('002',27,7)
insert into 表A(id,data,month) values('002',28,8)
insert into 表A(id,data,month) values('002',29,9)
insert into 表A(id,data,month) values('002',210,10)
insert into 表A(id,data,month) values('002',211,11)
insert into 表A(id,data,month) values('002',212,12)
goSELECT id as '人员' ,
SUM(CASE month WHEN 1 THEN data ELSE 0 END) AS '1月' ,
SUM(CASE month WHEN 2 THEN data ELSE 0 END) AS '2月' ,
SUM(CASE month WHEN 3 THEN data ELSE 0 END) AS '3月' ,
SUM(CASE month WHEN 4 THEN data ELSE 0 END) AS '4月' ,
SUM(CASE month WHEN 5 THEN data ELSE 0 END) AS '5月' ,
SUM(CASE month WHEN 6 THEN data ELSE 0 END) AS '6月' ,
SUM(CASE month WHEN 7 THEN data ELSE 0 END) AS '7月' ,
SUM(CASE month WHEN 8 THEN data ELSE 0 END) AS '8月' ,
SUM(CASE month WHEN 9 THEN data ELSE 0 END) AS '9月' ,
SUM(CASE month WHEN 10 THEN data ELSE 0 END) AS '10月' ,
SUM(CASE month WHEN 11 THEN data ELSE 0 END) AS '11月' ,
SUM(CASE month WHEN 12 THEN data ELSE 0 END) AS '12月'
FROM 表A
GROUP BY ID drop table 表A人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
---- --- --- --- --- --- --- --- --- --- ---- ---- ----
001 11 12 13 14 15 16 17 18 19 110 111 112
002 21 22 23 24 25 26 27 28 29 210 211 212(所影响的行数为 2 行)合计每个人每年的数据
人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 合计
001 11 12 13 14 15 16 17 18 19 110 111 112 468
002 21 22 23 24 25 26 27 28 29 210 211 212 858SELECT id as '人员' ,
SUM(CASE month WHEN 1 THEN data ELSE 0 END) AS '1月' ,
SUM(CASE month WHEN 2 THEN data ELSE 0 END) AS '2月' ,
SUM(CASE month WHEN 3 THEN data ELSE 0 END) AS '3月' ,
SUM(CASE month WHEN 4 THEN data ELSE 0 END) AS '4月' ,
SUM(CASE month WHEN 5 THEN data ELSE 0 END) AS '5月' ,
SUM(CASE month WHEN 6 THEN data ELSE 0 END) AS '6月' ,
SUM(CASE month WHEN 7 THEN data ELSE 0 END) AS '7月' ,
SUM(CASE month WHEN 8 THEN data ELSE 0 END) AS '8月' ,
SUM(CASE month WHEN 9 THEN data ELSE 0 END) AS '9月' ,
SUM(CASE month WHEN 10 THEN data ELSE 0 END) AS '10月' ,
SUM(CASE month WHEN 11 THEN data ELSE 0 END) AS '11月' ,
SUM(CASE month WHEN 12 THEN data ELSE 0 END) AS '12月' ,
SUM(data) as '合计'
FROM 表A
GROUP BY ID 人员 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 合计
---- --- --- --- --- --- --- --- --- --- ---- ---- ---- ----
001 11 12 13 14 15 16 17 18 19 110 111 112 468
002 21 22 23 24 25 26 27 28 29 210 211 212 858
select 品号,客户简称,客户品号,品名,规格,sum(订单数量)订单数量,'1' 月份
into #tmp01
from 表A where 预交货日 ='一月'
...
select 品号,客户简称,客户品号,品名,规格,sum(订单数量)订单数量,'12'月份
into #tmp12
from 表A where 预交货日 ='十二月'create table t(品号,客户简称,客户品号,品名,规格,1月,2月,...,12月)
insert into t
select distinct 品号,客户简称,客户品号,品名,规格
from 表Aupdate t
set 1月 = 订单数量
from #tmp01
where 品号= t.品号 and 月份 ='1'
...update t
set 1月 = 订单数量
from #tmp01
where 品号= t.品号 and 月份 ='12'select * from t
update t
set 12月 = 订单数量
from #tmp12
where 品号= t.品号 and 月份 ='12'
use test
go
use test
go
create table 表A
(
id char(3),
data int,
month int
)
insert into 表A(id,data,month) values('001',11,1)
insert into 表A(id,data,month) values('001',12,2)
insert into 表A(id,data,month) values('001',13,3)
insert into 表A(id,data,month) values('001',14,4)
insert into 表A(id,data,month) values('001',15,5)
insert into 表A(id,data,month) values('001',16,6)
insert into 表A(id,data,month) values('001',17,7)
insert into 表A(id,data,month) values('001',18,8)
insert into 表A(id,data,month) values('001',19,9)
insert into 表A(id,data,month) values('001',110,10)
insert into 表A(id,data,month) values('001',111,11)
insert into 表A(id,data,month) values('001',112,12)
insert into 表A(id,data,month) values('002',21,1)
insert into 表A(id,data,month) values('002',22,2)
insert into 表A(id,data,month) values('002',23,3)
insert into 表A(id,data,month) values('002',24,4)
insert into 表A(id,data,month) values('002',25,5)
insert into 表A(id,data,month) values('002',26,6)
insert into 表A(id,data,month) values('002',27,7)
insert into 表A(id,data,month) values('002',28,8)
insert into 表A(id,data,month) values('002',29,9)
insert into 表A(id,data,month) values('002',210,10)
insert into 表A(id,data,month) values('002',211,11)
insert into 表A(id,data,month) values('002',212,12)
godeclare @i int,@s nvarchar(4000)
select @i=1,@s=''
while @i!>12
select @s=@s+',['+rtrim(@i)+'月]=sum(case when [month]='+rtrim(@i)+' then data else 0 end)',@i=@i+1
exec('select ID'+@s+' from 表A group by ID')
ID 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
---- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
001 11 12 13 14 15 16 17 18 19 110 111 112
002 21 22 23 24 25 26 27 28 29 210 211 212
select @i=1,@s=''
while @i!>12
select @s=@s+',['+rtrim(@i)+'月]=sum(case when month([预交货日])='+rtrim(@i)+' then data else 0 end)',@i=@i+1
exec('select ID'+@s+' from 表A group by ID,year(预交货日)')----以上生成的语句为
select ID,year(预交货日)
[1月]=sum(case when month([预交货日])=1 then data else 0 end),
[2月]=sum(case when month([预交货日])=2 then data else 0 end),
[3月]=sum(case when month([预交货日])=3 then data else 0 end),
[4月]=sum(case when month([预交货日])=4 then data else 0 end),
[5月]=sum(case when month([预交货日])=5 then data else 0 end),
[6月]=sum(case when month([预交货日])=6 then data else 0 end),
[7月]=sum(case when month([预交货日])=7 then data else 0 end),
[8月]=sum(case when month([预交货日])=8 then data else 0 end),
[9月]=sum(case when month([预交货日])=9 then data else 0 end),
[10月]=sum(case when month([预交货日])=10 then data else 0 end),
[11月]=sum(case when month([预交货日])=11 then data else 0 end),
[12月]=sum(case when month([预交货日])=12 then data else 0 end) from 表A group by ID,year(预交货日)