各行を一意にする 2 つの識別値 (製品コードと詳細コード) に基づいて値を格納するテーブルと、詳細コードに基づいて値のタイプを格納する 3 番目の値があります。私がやりたいことは、任意の 1 つの製品コードの 3 番目の値をすべて新しい列に表示することです。詳細コードは、列ヘッダーとして機能します。
私がこれまでに試したこと:
SELECT id1,
CASE WHEN id2 ='A'
THEN value
ELSE 0
END A,
CASE WHEN id2 ='B'
THEN value
ELSE 0
END B
FROM table1
WHERE id2 = 'A' OR id2 = 'B'
GROUP BY id1
これは正常に機能しましたが、id2 = 'A' の値がテーブルに存在する場合、id2 = 'B' の CASE WHEN は正しい値 (存在する場合) ではなく 0 にデフォルト設定されます。id2 = 'A' のレコードがない場合、CASE WHEN は id2 = 'B' に対して正しく機能します。
これについてもっと良い方法もあると思いますが、この正確な状況をどこでも見つけるのに苦労しました。複数の列がなくてもデータを確実に使用できますが、何かを学ばない/学ばないことを望んでいました