この質問のタイトルは、実際には私が望むものを反映していない可能性があります。これ以上良いものは思いつきませんでした。たぶん、 「この方法で取得した2つのテーブルを結合する」を最後に追加する必要がありました。
このテーブルがあるとしましょう。シナリオは、 idloan_id
でローンを支払い、その支払いをテーブル「Payment」に保存し、各支払いには独自の がありid
ます。お客様が代金を支払うと、 に変わりpaid
ます1
。
+---------+----+--------+------+
| loan_id | id | amount | paid |
+---------+----+--------+------+
| 1 | 1 | 1000 | 1 |
| 1 | 2 | 1000 | 1 |
| 1 | 3 | 1000 | 0 |
| 2 | 4 | 10000 | 0 |
| 3 | 5 | 20000 | 1 |
+---------+----+--------+------+
そして今、ローンに関するレポートが必要です。出力は次のようになります。
+---------+-------+-----------+
| loan_id | paid | remaining |
+---------+-------+-----------+
| 1 | 2000 | 1000 |
| 2 | 0 | 10000 |
| 3 | 20000 | 0 |
+---------+-------+-----------+
paid
列は基本的にamount
、pay = 1 のすべてのフィールドの合計です。そして、pay = 0 の行のremaining
合計です。これらは でグループ化する必要があります。amount
loan_id
私が試したこと:
さまざまな結合、製品などを試しましたが、クエリから得られる最良のものは次のとおりです。
SELECT loan_id, SUM(paid), SUM(remaining)
FROM (
SELECT loan_id, 0 AS paid, SUM(amount) AS remaining
FROM Payment
WHERE paid = 0
GROUP BY loan_id
UNION
SELECT loan_id, SUM(amount) AS paid, 0 AS remaining
FROM Payment
WHERE paid = 1
GROUP BY loan_id
)
GROUP BY loan_id
しかし、私よりも良い方法があるはずです。