0

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

其他表(T2)存储已支付的金额(Pay),这可以是多个,因为可以为 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 的总和和 T2 的总和(基于 T1 的 ID)按类型分组

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

希望我试图让问题足够清楚。

4

1 回答 1

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
于 2012-08-06T10:54:18.303 回答