クレジットメモがある場合、支払いを除くすべての行の請求書アクティビティを取得しようとしています。請求書(I)、クレジットメモ(C)、支払い(P)、デビットメモ(D)など、さまざまなアクティビティを持つ共通の注文番号があります。注文書にクレジットメモがない場合、私はそれを記載したくありません。クレジットレコードがある場合、すべての請求書アクティビティを取得
私が探している結果セットがある:代わりに
Order_id record_type amount order_date invoice_no_string
-------------------------------------------------------------------
5023318 Invoice 3063.38 3/7/16 5023318
5023318 Credit memo -3063.38 3/7/16 5023318
5023318 Invoice 2723.00 3/7/16 5023318A
、これを理解しようとする日後、私はこれを得るまでだ:
Order_id record_type amount order_date invoice_no_string
-------------------------------------------------------------------
5023318 Invoice 3063.38 3/7/16 5023318
5023318 Credit memo -3063.38 3/7/16 5023318
5023318 Credit memo -3063.38 3/7/16 5023318
5023318 Invoice 2723.00 3/7/16 5023318A
私は新しいですSQLのではなく、これが何であるかをデータベースタイプを確認してください...ここで
コードは任意のヘルプは高く評価され、..です
SELECT
file1.order_id order_id,
file1.invoice_no_string,
file1.bill_date,
convert(varchar(10),orders.ordered_date,101) order_date,
file1.customer_id cust_no,
customer.name cust_name,
file1.record_type type,
file1.amount amount,
file1.source
FROM
open_item file1
JOIN
open_item file2
ON
file1.order_id = file2.order_id
LEFT OUTER JOIN
customer on customer.id = file1.customer_id and
customer.company_id = 'TMS'
LEFT OUTER JOIN
orders on orders.id = file1.order_id and
orders.company_id = 'TMS'
WHERE
file1.company_id = 'TMS' and
orders.ordered_date >= {d '2016-03-01'} and
orders.ordered_date <= {d '2016-03-15'} and
file1.source ='B' and
file1.record_type = 'I' and
file2.record_type = 'C' or
file1.company_id = 'TMS' and
orders.ordered_date >= {d '2016-03-01'} and
orders.ordered_date <= {d '2016-03-15'} and
file1.source ='B' and
file1.record_type = 'C'
ORDER BY
order_id
これはあなたの問題を解決することはできませんが、 'WHERE'節に右側のテーブルフィルタ(' orders')を含めることで、 'LEFT OUTER JOIN'を' INNER JOIN'に変換しています。それらは 'ON'節に移動する必要があります。 – Siyual
クエリが実行される場合は、SQL Serverです。 –