SQL with Joinby with groupby

时间:2012-08-06 09:55:55

标签: sql

我有两个表说T1和T2,一个(T1)存储要支付的金额(AP),主键ID和人员ID(pid)。

支付的其他表(T2)存储金额(支付),这可以是多个,因为可以为AP进行多次支付,也可以存储T1 ID的外键和类型。

现在我想要的是来自t1的SUM(AP)和SUM(Pay)groupby类型。

我为它做的查询,(不是确切的查询,但解释了我正在尝试的内容)

select SUM(AP) from T1 
where pid='someid' join left T2 on t1.id = t2.id, 
select Pay and type from T2, groupby type

解释

T1                T2

ID   AP            ID Pay Type

19   X             19 W  A
20   Y             19 Q  B
21   Z             21 R  B
                   21 S  B

现在发生了什么,当它按类型分组时,它一起需要19,21,21作为B,并且由此它给出了从T1到Z + X两倍的总和,也是对于A,它取A和将总和换算为X

我收到格式

的数据
1. AP:X, Pay:W, Type: A
2. AP: X+Z+Z, Pay:Q+R+S,Type B

我需要的是来自T1的T1和来自T2的总和(基于来自T1的id)按类型分组

我使用两个不同的查询解决了这个问题,但是不能在单个查询中进行,我知道这可能很复杂,但如果可能的话,我想知道。

希望我试着提出足够清楚的问题。

1 个答案:

答案 0 :(得分:1)

这就是你要追求的吗?

select 
    vt1.id,
    vt1.ap,
    sum(t2.pay),
    t2.type

from (select id, sum(ap) as ap from t1 group by id) vt1
    left join t2 on vt1.id=t2.id
group by vt1.id, vt1.ap, t2.type