いつもお世話になります。
SQLについての質問をさせていただきます。
RDBMSはDB2ですが、他のSQLでの解決法でも参考にさせていただきたいです。
以下のデータがあるとします。
売上ヘッダー
売上ID | 金額 |
---|---|
100 | *** |
売上明細
売上ID | 明細番号 |
---|---|
100 | 0 |
100 | 1 |
100 | 2 |
取付費データ
売上ID | 明細番号 | 作業者コード | 作業者並び順 | 取付金額 |
---|---|---|---|---|
100 | 0 | A | 1 | *** |
100 | 1 | A | 1 | *** |
100 | 2 | A | 1 | *** |
100 | 1 | B | 2 | *** |
100 | 2 | B | 2 | *** |
100 | 0 | C | 3 | *** |
これらのデータから、売上ID:100にどの作業者が関わっていたのかを1行で表現したいので、
このようなデータを取得したいです。
売上ID | 作業者1 | 作業者2 | 作業者3 |
---|---|---|---|
100 | A | B | C |
今思いついているのが、
SELECT
DISTINCT H.売上ID, T1.作業者コード, T2.作業者コード, T3.作業者コード
FROM 売上ヘッダー AS H
LEFT JOIN 取付費データ AS T1 ON T1.売上ID = H.売上ID AND T1.作業者並び順 = 1
LEFT JOIN 取付費データ AS T2 ON T2.売上ID = H.売上ID AND T2.作業者並び順 = 2
LEFT JOIN 取付費データ AS T3 ON T3.売上ID = H.売上ID AND T3.作業者並び順 = 3
ですが、LEFT JOINを同じデータに何度も行っているところが明らかに無駄であり、おそらく他にいい手があるのだろうと感じています。
よい方法がありましたら、是非お知恵を拝借したいと思います。
お手数をおかけしますが、よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。