我对在不同地区销售的钻石宝石有以下信息。更好的书写脚本方式
TEMP1
Region Cut Color SoldQty
------- -- ----- -------
01 RD C 1
01 RD A 1
01 RD C 3
01 BA C 2
02 RD A 2
02 BA A 3
02 BA B 0
02 BA A 1
从上面的,我需要在SQL Server 2005中的以下信息基本上为Region
,Cut
和Color
一个独特的组合,我需要Sold Qty
总结和为每个地区计算的销售百分比。
最终输出需要
Region Cut Color SoldQty TotalSOld %SOld
------- -- ----- ------- --------- -----
01 RD C 1 4 4/7
01 RD A 1 1 1/7
01 BA C 2 2 2/7
02 RD A 2 2 2/6
02 BA A 4 4 4/6
02 BA B 0 0 0
为了实现这一点,我使用2-3临时表 - 如下。
select
Region, Cut, Color,
sum(SoldQty),
'TotalSoldQty' = Sum (SoldQty) OVER(PARTITION BY Region)
into temp2
from temp1
group by Region, Cut, Color
这会给表格temp2如下。
Region Cut Color SoldQty TotalSOld
------- -- ----- ------- ---------
01 RD C 1 4
01 RD A 1 1
01 BA C 2 2
02 RD A 2 2
02 BA A 4 4
02 BA B 0 0
然后我又添加了一个select来获得最终表。上述
select
Region, Cut, Color,SoldQty, TotalSOld,
'PercentageSoldQty' = case when TotalSold = 0 then 0
else (SoldQty *100/TotalSold) end
from temp2
该给我的结果,但我相信,必须有一个更好的方式来在一个单一的选择做到这一点比使用多个临时表。
任何人都可以帮忙吗?