#mysql #pivot #inner-join
Вопрос:
У меня есть три таблицы, которые приведены ниже
- регион (первичный ключ (region_id), внешний ключ (super_region_id), регион ссылок (region_id)) как
region_id | название региона | супер_регион_ид |
---|---|---|
101 | Север | Америка |
102 | США | 101 |
103 | Канада | 101 |
104 | США-Северо-восток | 102 |
105 | США-Юго-Восток | 102 |
106 | США-Запад | 102 |
107 | Мексика | 101 |
- продукт (первичный ключ product_id, имя продукта) как
product_id | имя продукта |
---|---|
1256 | Шестерня-Большая |
4437 | Шестерня Маленькая |
5567 | Коленчатый вал |
7684 | Цепное колесо |
- итоги продаж (целое число product_id, целое число region_id, целое число за год, целое число за месяц, целое число продаж, первичный ключ (идентификатор продукта, идентификатор региона, год, месяц), внешний ключ (идентификатор продукта) ссылается на продукт (идентификатор продукта), внешний ключ (идентификатор региона) ссылается на регион (идентификатор региона)) как
product_id | region_id | год | месяц | продажи |
---|---|---|---|---|
1256 | 103 | 2020 | 4 | 2200 |
1256 | 103 | 2020 | 10 | 1900 |
1256 | 104 | 2020 | 1 | 1000 |
1256 | 104 | 2020 | 7 | 1100 |
4437 | 105 | 2020 | 2 | 1200 |
4437 | 105 | 2020 | 8 | 1050 |
4437 | 107 | 2020 | 5 | 1700 |
4437 | 107 | 2020 | 11 | 1500 |
7684 | 104 | 2020 | 6 | 750 |
7684 | 104 | 2020 | 12 | 900 |
7684 | 106 | 2020 | 3 | 800 |
7684 | 106 | 2020 | 9 | 600 |
Мне нужно свернуть данные sales_totals так, чтобы для каждого из 4 продуктов был столбец, содержащий общий объем продаж за все месяцы 2020 года, который я пытался решить, используя как
select p.product_name,sum(if (p.product_name = 'Gear-Large',st.sales,NULL) as total_sales_large_gear, sum(if (p.product_name = 'Gear Small',st.sales,null) as total_sales_small_gear, sum(if (p.product_name = 'Sprocket',st.sales,null) as total_sales_sprocket, sum(if (p.product_name = 'Crankshaft',st.sales,null)) as tot_sales_crankshafts from product p inner join sales_totals st on st.product_id = p.product_id group by p.product_name;
но я получаю такую ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as total_sales_large_gear, sum(if (p.product_name = 'Gear Small',st.sales,null) ' at line 1
Результат должен отображаться в столбцах следующим образом
tot_sales_large_gears
tot_sales_small_gears
tot_sales_crankshafts
tot_sales_sprockets
Комментарии:
1. Отсутствует ) , чтобы закрыть вызов функции sum() перед псевдонимом.
2. о!!! спасибо, парень, получил результат