日期:2014-05-18 浏览次数:20535 次
Select a.单位,b.数量 as 电脑,Cast(b.数量/a.人数 as int) as 电脑人均比例,c.数量 as 打印机,cast(c.数量/a.人数 as int) as 打印机人均比例 From 人数表 a Left Join (Select 单位,数量 From 销售表 Where 商品名称='电脑') b On b.单位=a.单位 Left Join (Select 单位,数量 From 销售表 Where 商品名称='打印机') c On c.单位=a.单位
------解决方案--------------------
create table 销售表(单位 char(10), 商品名称 char(20), 数量 int )
insert 销售表 select
'郑州' , '电脑' , 10 union all select
'郑州' , '打印机', 20 union all select
'洛阳' , '电脑' , 20 union all select
'洛阳' , '打印机', 40 union all select
'开封' , '打印机' , 10 union all select
'开封' , '电脑' , 10
create table 人数表 (单位 char(10), 人数 int )
insert 人数表 select
'郑州' , 5 union all select
'洛阳' , 10 union all select
'开封' , 2
select 单位,sum(case 商品名称 when '电脑' then 数量 else 0 end ) 电脑 ,
sum(case 商品名称 when '电脑' then 数量 else 0 end )*1/(select 人数 from 人数表 where 单位=a.单位) 电脑人均比例,
sum(case 商品名称 when '打印机' then 数量 else 0 end )打印机,
sum(case 商品名称 when '打印机' then 数量 else 0 end )*1/(select 人数 from 人数表 where 单位=a.单位) 打印机人均比例
from 销售表 a group by 单位
------解决方案--------------------
select a.单位,sum(case a.商品名称 when '电脑 ' then 数量 else 0 end ) 电脑 ,
sum(case a.商品名称 when '电脑 ' then 数量 else 0 end )*1/ b.人数 电脑人均比例,
sum(case a.商品名称 when '打印机 ' then 数量 else 0 end )打印机,
sum(case a.商品名称 when '打印机 ' then 数量 else 0 end )*1/b.人数 打印机人均比例
from 销售表 a inner join 人数表 b on a.单位=b.单位 group by a.单位
------解决方案--------------------
create table 销售表([单位] nvarchar(10), [商品名称] nvarchar(20), [数量] int ) insert 销售表 select '郑州' , '电脑' , 10 union all select '郑州' , '打印机', 20 union all select '洛阳' , '电脑' , 20 union all select '洛阳' , '打印机', 40 union all select '开封' , '打印机' , 10 union all select '开封' , '电脑' , 10 create table 人数表 (单位 nvarchar(10), 人数 int ) insert 人数表 select '郑州' , 5 union all select '洛阳' , 10 union all select '开封' , 2 --drop table 人数表,销售表 declare @s nvarchar(4000) set @s='' select @s=@s+','+quotename(商品名称)+'=sum( case 商品名称 when '+quotename(商品名称,'''')+' then 数量 else 0 end),' +'['+商品名称+'人均比例]=sum( case 商品名称 when '+quotename(商品名称,'''')+' then 数量/b.人数 else 0 end)' from 销售表 group by 商品名称 --print @s exec('select a.单位'+@s+'from 销售表 a join 人数表 b on a.单位=b.单位 group by a.单位') 单位 打印机 打印机人均比例 电脑 电脑人均比例 ---------- ----------- ----------- ----------- ----------- 开封 10 5 10 5 洛阳 40 4 20 2 郑州 20 4 10 2