タイトル通りのことをしたいのですが、組み合わせ方がわかりません。
一つ目のテーブル
sql
1INSERT INTO 2 sql_task.toys 3 (id,name,colorcode,price,remarks) 4 VALUES 5 (1, 'パーティ衣装', "002", 1680,NULL), 6 (2, 'ブリキのおもちゃ', "001", 412,NULL), 7 (3, 'ゾンビのマスク', "005", 568,NULL), 8 (4, 'ブリキのおもちゃ', "004", 412,NULL), 9 (5, 'ゾンビのマスク', "002", 568,NULL), 10 (6, 'ブリキのおもちゃ', "005", 412,NULL), 11 (7, 'ゾンビのマスク', "001", 568,NULL), 12 (8, 'ゾンビのマスク', "004", 568,NULL), 13 (9, 'パーティ衣装', "001", 1680,NULL), 14 (10, 'パーティ衣装', "004", 1680,NULL), 15 (11, 'パーティ衣装', "005", 1680,NULL), 16 (12, 'ブリキのおもちゃ', "001", 412,NULL), 17 (13, 'パーティ衣装', "001", 1680,NULL), 18 (14, 'ゾンビのマスク', "004", 568,NULL), 19 (15, 'パーティ衣装', "003", 1680,NULL), 20 (16, 'ブリキのおもちゃ', "003", 412,NULL), 21 (17, 'ブリキのおもちゃ', "003", 412,NULL), 22 (18, 'パーティ衣装', "003", 1680,NULL), 23 (19, 'ブリキのおもちゃ', "002", 412,NULL), 24 (20, 'ゾンビのマスク', "001", 568,NULL);
2つ目のテーブル
sql
1INSERT INTO 2 sql_task.colortable 3 (id,colorcode,color) 4 VALUES 5 (1,"001","赤"), 6 (2, "002", "青"), 7 (3, "003", "黄"), 8 (4, "004", "白"), 9 (5, "005", "黒");
上記2つを結合したテーブル
sql
1SELECT 2 T.id, 3 T.name AS "商品名", 4 C.color AS "色", 5 T.price AS "値段" 6FROM 7 toys AS T 8RIGHT JOIN 9 colortable AS C 10ON 11 T.colorcode = C.colorcode;
結合済みのテーブルをサブクエリとし、
それを使用してクロス集計を行います
クロス集計の結果は下記のように、色がそれぞれ何回出たかカウントした集計になってほしいです。
例:
id 商品名 赤 青 白 黄色
1 あああ 1 3 4 1
2 いいい 2 4 0 2
3 ううう
4 えええ
とりあえず色々なサイトから引っ張ってきてコードを下記のように書いてみたのですが、'field list'にないよエラーが出てしまい詰まっています。
sql
1SELECT name, 2 max(CASE WHEN color = '赤' THEN 1 ELSE 0 END) AS 赤, 3 max(CASE WHEN color = '青' THEN 1 ELSE 0 END) AS 青, 4 max(CASE WHEN color = '黄' THEN 1 ELSE 0 END) AS 黄, 5 max(CASE WHEN color = '白' THEN 1 ELSE 0 END) AS 白, 6 max(CASE WHEN color = '黒' THEN 1 ELSE 0 END) AS 黒 7FROM ( 8 SELECT 9 T.id, 10 T.name AS "商品名", 11 C.color AS "色", 12 T.price AS "値段" 13FROM 14 toys AS T 15RIGHT JOIN 16 colortable AS C 17ON 18 T.colorcode = C.colorcode) AS toys2 19GROUP BY name; 20
ご教授よろしくお願いいたします!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/19 12:26