日期:2014-05-17  浏览次数:20597 次

关于SQL查询的问题,跪求高手帮助!!
t1表中有Id,PartMent,Money三个字段,里面插入数据:
insert t1 select '111','4801',10
insert t1 select '111','4802',15
insert t1 select '111','4803',25
insert t1 select '112','4801',30
insert t1 select '112','4802',45

t2表中有Id,Type,T_Money三个字段,里面插入数据:
insert t1 select '111','红利卡',30
insert t1 select '111','现金',20
insert t1 select '112','红利卡',50
insert t1 select '112','现金',25
(T2表中的Id和T1表中Id为同一个值,同一个ID例如'111'在T1表中三个部门加起来的金额为50与T2
表中对应ID'111'的T_Money字段的和50相同也是对应关系)

问题:1、统计Type类型为“红利卡”在各部门的使用金额,需要有考虑分摊
预期的显示效果是
4801 26
4802 39
4803 15
:(举列部门4803在ID'111'消费了25,但其中红利卡只占了(30/(30+20))=60%,所以4803消费的红利卡金额为25*60%=15)
求SQL语句写法
SQL

------解决方案--------------------


SELECT t1.PartMent, SUM(t1.Money * s.Pct)
FROM t1 INNER JOIN (t2.ID, CAST(SUM(CASE WHEN t2.Type='红利卡' THEN t2.T_Money ELSE 0 END)/SUM(t2.T_Money) AS DECIMAL(3,2)) AS Pct  
FROM t2 GROUP BY t2.ID 
) s ON t1.ID=s.ID 
GROUP BY t1.PartMent