この難しいoracleのSQL文を考えて欲しいです。
Q&A
Closed
前提
Oracle Databaseを使用しています。
以下のSQL文を実行します。
CREATE文です。
CREATE TABLE PURCHASE_HISTORY (PURCHASER_ID CHAR(5), ORDER_ID VARCHAR(30), PURCHASED_PRODUCTS_ID CHAR(5));
CREATE TABLE SHIPPING_HISTORY (ORDER_ID VARCHAR(30));
一部のINSERT文です。
INSERT INTO PURCHASE_HISTORY (PURCHASER_ID, ORDER_ID, PURCHASED_PRODUCTS_ID) VALUES ('1', '1_20200101', 'A');
INSERT INTO SHIPPING_HISTORY (ORDER_ID) VALUES (''1_20200101');
下記のようなテーブルが2つできます。
PURCHASE_HISTORY
PURCHASER_ID | ORDER_ID | PURCHASED_PRODUCTS_ID |
---|---|---|
1 | 1_20200101 | A |
1 | 1_20200101 | B |
1 | 1_20200102 | C |
1 | 1_20200102 | A |
2 | 2_20200102 | D |
2 | 2_20200102 | E |
2 | 2_20200103 | C |
2 | 2_20200103 | A |
SHIPPING_HISTORY
ORDER_ID |
---|
1_20200101 |
1_20200102 |
実現したいこと
以下の手順を1つのSQL文で実現したいです。
- SHIPPING_HISTORYテーブルに存在しないORDER_IDを持つレコードをPURCHASE_HISTORYテーブルから全カラムを指定して取得する。
2.1で取得したレコードをORDER_IDで1つのレコードにまとめる。
なのでSQL実行の結果、以下のような結果になるようにしたいです。
PURCHASED_PRODUCTS_ID_1,PURCHASED_PRODUCTS_ID_2 の部分は固定です。
|PURCHASER_ID|ORDER_ID|PURCHASED_PRODUCTS_ID_1|PURCHASED_PRODUCTS_ID_2|
|:--|:--:|--:|--:|
|2| 2_20200102 |D|E|
|2| 2_20200103 |C|A|
試したこと
group byとmaxを使えばいけるそうですが、まだできていません。
0