我有以下关于在各个地区销售的钻石的信息。
温度1
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
Region, Cut, Color,SoldQty, TotalSOld,
'PercentageSoldQty' = case when TotalSold = 0 then 0
else (SoldQty *100/TotalSold) end
from temp2
以上给了我结果,但我敢肯定,与使用多个临时表相比,在单个选择中必须有更好的方法来完成此操作。
任何人都可以帮忙吗?