0

T1とT2という2つのテーブルがあり、1つ(T1)には、支払われる金額(AP)、主キーID、および個人ID(pid)が格納されています。

他のテーブル(T2)は、支払われる金額(Pay)を格納します。これは、APに対して複数の支払を行うことができるため、複数にすることができ、T1 IDの外部キーも格納し、タイプします。

今私が欲しいのはt1からのSUM(AP)とタイプごとのSUM(Pay)です。

私がそれのために作ったクエリ(正確なクエリではありませんが、私が試していることをよく説明しています)

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

何が起こっているのか、タイプ別にグループ化すると、Bとして19,21,21が必要になります。これにより、T1からの合計がZ + Xの2倍になります。また、Aの場合、Aを取得し、合計を次のように返します。バツ

私はフォーマットでデータを受け取ります

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

私が必要としたのは、タイプ別のグループごとのT1からの合計とT2からの合計(T1からのIDに基づく)でした

それぞれに1つずつ、2つの異なるクエリを使用してこれを解決しましたが、単一のクエリでは実行できません。複雑かもしれませんが、可能であれば必要でした。

質問を十分に明確にしようとしたことを願っています。

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 に答える