0

これは非常に単純なクエリのように見えますが、明らかな何かが欠けているに違いありません。このシナリオはかなり一般的だと思います。

製品を格納するテーブルと、トランザクションを格納する別のテーブルがあります。transaction テーブルには、セールスマンに関する情報が含まれています。ここで、すべての製品をリストし、この製品を最後に販売したセールスマンの ID を含むレポートを作成する必要があります。

次のような簡単なクエリを試しました。

select id, product_name, (select salesman_id from (select salesman_id from trans where product_id = a.id order by trans_date desc) where rownum = 1) salesman_id from products a

このクエリにより、a.id で無効な識別子が返されました。

ネットを検索した後、LATERAL句を追加しようとしました。次のように

select id, product_name, salesman_id from products a, LATERAL(select salesman_id from (select salesman_id from trans where product_id = a.id order by trans_date desc) where rownum = 1)

しかし、このクエリでは不完全な SQL ステートメントが返されます。

単一のクエリでこれを達成する簡単な方法はありますか?

4

2 に答える 2

0

次のようなサブクエリが必要です。

製品 p、trans t から p.id、p.product_name、t.salesman_id を選択します。t.product_id = p.product_id および t.trans_date = (t_in.product_id = t.product_id の場合、trans t_in から max(trans_date) を選択します)

于 2014-10-22T16:09:07.767 に答える