【SQL】縦関係のカラムをピボット集計のように二軸集計をする方法

SQL初心者です。
Excelでいうピボット集計のような集計ができないかと考えておりますが、大変恐れ入りますが、ご教授を頂けますと幸いです。

業務で以下のようなデータソースがあります。

user_id traffic_souce created_at
123456789 AAA 2022/4/11 0:00
789456123 BBB 2022/4/12 0:00
563247859 CCC 2022/4/13 0:00
123456789 DDD 2022/4/14 0:00
789456123 EEE 2022/4/15 0:00
563247859 AAA 2022/4/15 0:00

これを、以下のようなWxcelのピボットテーブルのような形式で出力をしたいと考えています。

user_id AAA BBB CCC DDD EEE
123456789 1 0 0 1 0
789456123 0 1 0 0 1
563247859 1 0 1 0 0

固定値で、

SQL

SELECT user_id, MAX(CASE user_idWHEN 'AAA' THEN 1 ELSE 0 END) as AAA, MAX(CASE user_idWHEN 'BBB' THEN 1 ELSE 0 END) as BBB, MAX(CASE user_idWHEN 'CCC' THEN 1 ELSE 0 END) as CCC, MAX(CASE user_idWHEN 'DDD' THEN 1 ELSE 0 END) as DDD,

と書けばできそうなことまでは辿り着きましたが、traffic_souceのユニーク値は時間とともに増えていくため、自動で横軸が増えていく方法を模索しております。

大変恐れ入りますが、例文や参考記事など、ヒントを頂けますと大変助かります。。

お忙しい中大変恐れ入りますが、
よろしくお願い致します。

コメントを投稿

0 コメント