Ниже приведена таблица ввода:
Входная таблица
|---------------------|------------------|
| date | total |
|---------------------|------------------|
| 12-1-2017 | 10 |
|---------------------|------------------|
| 12-2-2017 | 20 |
|---------------------|------------------|
| 12-1-2016 | 30 |
|---------------------|------------------|
| 12-2-2016 | 40 |
|---------------------|------------------|
| 12-3-2016 | 50 |
|---------------------|------------------|
Я хотел бы, чтобы в результате запроса были столбцы динамического года, как показано ниже:
|---------------------|------------------|------------------|
| day | total_2017 | total_2016 |
|---------------------|------------------|------------------|
| 12-1 | 10 | 30 |
|---------------------|------------------|------------------|
| 12-2 | 20 | 40 |
|---------------------|------------------|------------------|
| 12-3 | 0 | 50 |
|---------------------|------------------|------------------|
Может ли кто-нибудь помочь мне с наилучшим подходом?
Вот один из способов:
select month(date), day(date),
sum(case when year(date) = 2017 then total else 0 end) as total_2017,
sum(case when year(date) = 2016 then total else 0 end) as total_2016
from t
group by month(date), day(date);
year(now())
вместо 2018 года.