-1
私はこれらの2つのテーブルを持っています。 item_tbl
で金額を取得しようとしていますが、payment_dt
は別のテーブルにあります(payment_tbl
)。SQL重複なしで2つのテーブルを結合する方法
2つのテーブルを結合して金額を正しく取得するにはどうすればよいですか?現在、私のSQL(PostgreSQLを使用)は3行を生成するので、合計を取得すると3倍になります。
item_tbl:
receipt_no | gross_amount | other_discount_amount | net_of_discount_amount
0000000617 | 2000.00 | 400.00 | 1600.00
payment_tbl:
receipt_no | amount(net) | payment_method | payment_dt
0000000617 | 639.49 | cash | 2016-05-31 11:48:23.5+08
0000000617 | 500.00 | check | 2016-05-31 11:48:23.5+08
0000000617 | 500.00 | debit card | 2016-05-31 11:48:23.5+08
期待結果:
gross_amount | other_discount_amount | net_of_discount_amount
2000.00 | 400.00 | 1600.00
クエリ:
SELECT
cashier.cashier_name,
COALESCE(gross_amount, 0) AS gross_amount,
(CASE WHEN item.other_discount_type = 'OTHER' THEN COALESCE(item.other_discount_amount, 0) ELSE 0 END) AS other_discount_amount,
COALESCE(item.net_of_discount_amount, 0) AS net_of_discount_amount
FROM
item_tbl item
INNER JOIN
payment_tbl payment ON item.receipt_no = payment.receipt_no
LEFT JOIN
cashier_tbl cashier ON cashier.id = item.cashier_id
WHERE
date(payment.payment_dt) = to_date('31 May 2016', 'dd Mon YYYY')
どのくらいの金額が必要ですか?期待している結果を追加してください – Jens
どのDBMSをお使いですか?無関係ですが、to_date('2011年5月31日 '、'月曜日YYYY ')を使用した変換は、現在の環境に依存します。例えば、私のコンピュータで失敗します。言語に依存しない日付の値を使用する必要があります(例: '31-05-2016' –
構文エラーです。 (ヒント:where句。) – jarlh