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 コメント