Имеется таблица следующего вида:
CREATE TABLE new_t(id INT, type_data TEXT, amount INT, year INT, PRIMARY KEY(id));
INSERT INTO new_t VALUES(1, 'First', 500, 2018);
INSERT INTO new_t VALUES(2, 'Second', 90, 2018);
INSERT INTO new_t VALUES(3, 'First', 300, 2019);
INSERT INTO new_t VALUES(4, 'Second', 250, 2019);
INSERT INTO new_t VALUES(5, 'First', 600, 2020);
INSERT INTO new_t VALUES(6, 'Second', 500, 2020);
Из нее надо составить таблицу вида
Сделать это надо одним запросом без создания новой таблицы.
Т.е. мне нужно выбрать через SELECT уникальные значения из последнего столбца и сделать их новыми столбцами
Уникальные значения я ищу через ORDER BY запросом:
SELECT DISTINCT year FROM new_t ORDER BY year ASC
Но я получаю строки, а не столбцы. Если я делаю второй SELECT, то результат совсем не тот, который я хочу увидеть:
SELECT type_data, (SELECT DISTINCT year FROM new_t ORDER BY year ASC) FROM new_t GROUP BY type_data
Все форумы перелистал и не могу понять, как можно сделать запрос, который переформирует строки в столбцы. Значения в столбцах могут быть любого количества, поэтому важно не зависеть от текущих значений, а получать их количество именно через SELECT.
Что я не так делаю?