0

次のテーブル構造があります。

cust_info

   cust_id
   cust_name

請求書情報

    bill_id
    cust_id
    bill_amount
    bill_date

有料情報

    paid_id
    bill_id
    paid_amount  
    paid_date

これで、次のように、出力に 2 つの日付間のレコード (2013 年 1 月 1 日から 2013 年 2 月 1 日) がbill_dates1 行として表示されるはずです。

 cust_name | bill_id | bill_amount | tpaid_amount | bill_date | balance

tpaid_amount特定の bill_id に対して支払われた合計金額はどこですか

例えば、

  • 請求書 ID abcd の場合、bill_amount は 10000 で、ユーザーは 2000 を 1 回、2 回目に 3000 を支払います。

  • つまり、paid_info テーブルには同じ bill_id の 2 つのエントリが含まれています

    bill_id | paid_amount
    abcd         2000
    abcd         3000
    

そう、tpaid_amount = 2000 + 3000 = 5000そしてbalance = 10000 - tpaid_amount = 10000 - 5000 = 5000

単一のクエリ (内部結合) でこれを行う方法はありますか?

4

2 に答える 2

1

これでうまくいきます。

select
    cust_name,
    bill_id,
    bill_amount,
    sum(paid_amount),
    bill_date,
    bill_amount - sum(paid_amount)
from
    cust_info
    left outer join bill_info
        left outer join paid_info
        on bill_info.bill_id=paid_info.bill_id
    on cust_info.cust_id=bill_info.cust_id
where
    bill_info.bill_date between X and Y
group by
    cust_name,
    bill_id,
    bill_amount,
    bill_date
于 2013-07-08T20:46:33.460 に答える