现在有数据如下:
日期 订单属性 订单数量
2010-6-21 第10单以上 2249
2010-6-21 第2~3单 5845
2010-6-21 第8~9单 744
2010-6-21 第1单 6997
2010-6-21 第4~5单 2451
2010-6-21 第6~7单 1281
2010-6-22 第10单以上 2456
2010-6-22 第2~3单 6210
2010-6-22 第8~9单 841
2010-6-22 第1单 7502
2010-6-22 第4~5单 2659
2010-6-22 第6~7单 1415现在想得出一个关于每天 各订单属性占比分布的数据,所以 不知道pivot有没有这样的功能,或者 有没有其他的解决方法
想要得出的结果:订单属性 2010-6-21 2010-6-22
第10单以上 11.49% 11.65%
第1单 35.76% 35.58%
第2~3单 29.87% 29.46%
第4~5单 12.53% 12.61%
第6~7单 6.55% 6.71%
第8~9单 3.80% 3.99%
日期 订单属性 订单数量
2010-6-21 第10单以上 2249
2010-6-21 第2~3单 5845
2010-6-21 第8~9单 744
2010-6-21 第1单 6997
2010-6-21 第4~5单 2451
2010-6-21 第6~7单 1281
2010-6-22 第10单以上 2456
2010-6-22 第2~3单 6210
2010-6-22 第8~9单 841
2010-6-22 第1单 7502
2010-6-22 第4~5单 2659
2010-6-22 第6~7单 1415现在想得出一个关于每天 各订单属性占比分布的数据,所以 不知道pivot有没有这样的功能,或者 有没有其他的解决方法
想要得出的结果:订单属性 2010-6-21 2010-6-22
第10单以上 11.49% 11.65%
第1单 35.76% 35.58%
第2~3单 29.87% 29.46%
第4~5单 12.53% 12.61%
第6~7单 6.55% 6.71%
第8~9单 3.80% 3.99%
解决方案 »
- 循环添加数据表列
- 如何用一条SQL查询出几个从表的记录数?
- 再请教一个比较复杂的多表查询,并统计结果?
- 动态交叉表(sql 2005)
- ..在下想请问下如何将SQL数据库转换成oracle数据库
- sql 似行转列,又不仅仅是行转列的问题,蛋疼中,在线求诊治..
- 救命啊!为什么我这个存储过程就是有语法错误???
- 为什么在企业管理中收缩数据库时,会出现算术溢出错误?具体如下:
- SQL Server 2005 SP2 安装失败
- 表的外键关系 alter table person add constraint fk_id(p_id) foreign key references permission (q_id)
- 全文索引查询的怪异问题,高手进
- 阅mssql 联机丛书 关于索引的疑问
insert into #xi values('1','第10单以上',2249)
insert into #xi values('1','第1单',6997)
insert into #xi values('1','第2~3单',5845)
insert into #xi values('1','第4~5单',2451)
insert into #xi values('1','第6~7单',1281)
insert into #xi values('1','第8~9单',744)
insert into #xi values('2','第10单以上',2456)
insert into #xi values('2','第1单',7502)
insert into #xi values('2','第2~3单',6210)
insert into #xi values('2','第4~5单',2659)
insert into #xi values('2','第6~7单',1415)
insert into #xi values('2','第8~9单',841)---pivot语句,不知道如何进行修改可以输出占比结果---
Select 订单属性,[1],[2]
From #xi
pivot
(sum(数量)
for row in([1],[2])
) AS PivotTabledrop table #xi
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + CONVERT(VARCHAR(10),[日期],120) from tb group by CONVERT(VARCHAR(10),[日期],120)
set @sql = '[' + @sql + ']'
exec ('select * from (select * from tb) a pivot (max([订单数量]) for [日期] in (' + @sql + ')) b order by [订单属性]')/*
订单属性 2010-06-21 2010-06-22
第10单以上 2249 2456
第1单 6997 7502
第2~3单 5845 6210
第4~5单 2451 2659
第6~7单 1281 1415
第8~9单 744 841*/
(a datetime,
b nvarchar(50),
c float)insert into test111(a,b,c)
select '2010-6-21','第10单以上','2249' union all
select '2010-6-21','第2~3单','5845' union all
select '2010-6-21','第8~9单','744' union all
select '2010-6-21','第1单','6997' union all
select '2010-6-21','第4~5单','2451' union all
select '2010-6-21','第6~7单','1281' union all
select '2010-6-22','第10单以上','2456' union all
select '2010-6-22','第2~3单','6210' union all
select '2010-6-22','第8~9单','841' union all
select '2010-6-22','第1单','7502' union all
select '2010-6-22','第4~5单','2659' union all
select '2010-6-22','第6~7单','1415' EXEC sp_dbcmptlevel 'att2008',90
select * from (select a.a ,a.b as b,a.c/sumc*100 as c from test111 a
inner join (select a,sum(c) as sumc from test111 group by a) b on a.a=b.a ) aa
pivot (sum(c)
for a in ([2010-06-21],[2010-06-22])) as pvt
inner join (select a,sum(c) as sumc from test111 group by a) b on a.a=b.a ) aa
pivot (max(c)
for a in ([2010-06-21],[2010-06-22])) as pvt
这个是结果
b 2010-06-21 2010-06-22
-------------------------------------------------- --------------------- ---------------------
第10单以上 11.49% 11.65%
第1单 35.76% 35.58%
第2~3单 29.87% 29.46%
第4~5单 12.53% 12.61%
第6~7单 6.55% 6.71%
第8~9单 3.80% 3.99%
btw: 熊猫是国宝, 打你不能还手