SQL Сервер: выберите отдельные данные с транспонированием - PullRequest
0 голосов
/ 05 мая 2020

У меня есть данные в такой таблице:

+-----------+-------------+-----------------+------+----------+
|   make    |    model    |     variant     | year |  price   |
+-----------+-------------+-----------------+------+----------+
| CHEVROLET | SPARK       | 08LS            | 2018 |  1000000 |
| CHEVROLET | SPARK       | 08LS            | 2017 |  2000000 |
| CHEVROLET | SPARK       | 08LS            | 2016 |  3000000 |
| CHEVROLET | SPARK       | 08LSTRENDY      | 2018 |  4000000 |
| CHEVROLET | SPARK       | 08LSTRENDY      | 2017 |  5000000 |
| CHEVROLET | SPARK       | 08LSTRENDY      | 2016 |  6000000 |
| TOYOTA    | LANDCRUISER | 10042DVX        | 2018 |  7000000 |
| TOYOTA    | LANDCRUISER | 10042DVX        | 2017 |  8000000 |
| TOYOTA    | LANDCRUISER | 10042DVX        | 2016 |  9000000 |
| TOYOTA    | LANDCRUISER | 10042DVX        | 2015 | 10000000 |
| TOYOTA    | LANDCRUISER | 10042DVXLIMITED | 2018 | 11000000 |
| TOYOTA    | LANDCRUISER | 10042DVXLIMITED | 2017 | 12000000 |
| TOYOTA    | LANDCRUISER | 10042DVXLIMITED | 2016 | 13000000 |
| TOYOTA    | LANDCRUISER | 10042DVXLIMITED | 2015 | 14000000 |
| TOYOTA    | LANDCRUISER | 10042DVXLIMITED | 2014 | 15000000 |
| TOYOTA    | LANDCRUISER | 10042DVXLIMITED | 2013 | 16000000 |
+-----------+-------------+-----------------+------+----------+

Я хочу выбрать данные в форме ниже

+-----------+-------------+-----------------+----------+----------+----------+----------+----------+----------+
|   make    |    model    |     variant     |   2018   |   2017   |   2016   |   2015   |   2014   |   2013   |
+-----------+-------------+-----------------+----------+----------+----------+----------+----------+----------+
| CHEVROLET | SPARK       | 08LS            |  1000000 |  2000000 |  3000000 | NULL     | NULL     | NULL     |
| CHEVROLET | SPARK       | 08LSTRENDY      |  4000000 |  5000000 |  6000000 | NULL     | NULL     | NULL     |
| TOYOTA    | LANDCRUISER | 10042DVX        |  7000000 |  8000000 |  9000000 | 10000000 | NULL     | NULL     |
| TOYOTA    | LANDCRUISER | 10042DVXLIMITED | 11000000 | 12000000 | 13000000 | 14000000 | 15000000 | 16000000 |
+-----------+-------------+-----------------+----------+----------+----------+----------+----------+----------+

Не могли бы вы помочь мне написать запрос для этого?

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете выполнить условную агрегацию:

select make, model, variant,
       sum(case when yr = 2018 then price else 0 end),
       sum(case when yr = 2017 then price else 0 end),
       sum(case when yr = 2016 then price else 0 end),
       sum(case when yr = 2015 then price else 0 end)
from table t
group by make, model, variant;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...