顧客テーブルと詳細テーブルがあります。
テーブル内のすべての顧客のレコードを取得し、該当する顧客に関する最新の詳細データを表示したいと考えています。
現在、where句は顧客を除外しています。
where 句を左外部結合に移動しようとしましたが、目的の結果を得ることができませんでした。
クエリを実行しても、製品がまったくフィルタリングされていないようです。
SELECT
cust.Customer
, cust.Company
, inv.Date
, inv.Product
, inv.Units
, inv.Extended
FROM
customerlist cust
LEFT OUTER JOIN
detail inv
ON
cust.customer = inv.customer
LEFT OUTER JOIN
detail inv2
ON
inv.customer = inv2.customer
AND (
inv.date < inv2.date
OR inv.date = inv2.date AND inv.customer < inv2.customer
)
WHERE
(
inv.Product = 'CC'
OR inv.Product = 'CG'
OR inv.Product = 'CH'
)
AND inv2.customer IS NULL
私の質問は似ています
私は同じことをしようとしていますが、すべての顧客を含めて製品でフィルタリングしたいだけです。
アップデート
サンプルデータ
これが私の元のクエリです。顧客がいないことを除けば、これは素晴らしいことです。
where句を削除して、次のように左結合に挿入すると
LEFT OUTER JOIN
detail inv2
ON
inv.customer = inv2.customer
AND (
inv.date < inv2.date
OR inv.date = inv2.date AND inv.customer < inv2.customer
)
AND (
inv.Product = 'CC'
OR inv.Product = 'CHECK'
OR inv.Product = 'ACH'
)
これが結果です。「CC」などではない製品列が表示されています。そして、顧客が重複しています。