私はこれを本から取り出しました
テーブル名がfoo
だとします。 。
まず、pivot
というテーブルを作成します :
CREATE Table pivot (
count int
);
foo
でピボットする列と同じ数の行をそのテーブルに挿入します 。 foo
に3つの列があるので ピボットする場合は、ピボットテーブルに3つの行を作成します。
insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);
次に、foo
間でデカルト結合を実行します およびpivot
、CASE
を使用 カウントに基づいて正しい列を選択するには:
SELECT foo.id, Case pivot.count
When 1 Then cat
When 2 Then one_above
When 3 Then top_level
End Case
FROM foo JOIN pivot;
これにより、必要なものが得られるはずです。