Динамический перенос таблицы
Привет,
У меня есть uestion относительно моего SQL-кода.
Моя цель-это переключение строк в столбцы.
ID | NAME | POINTS| DATE ----------------------------------- 1 | KARL | 2 | 2020-05-15 2 | EVA | 0 | 2020-05-15 3 | OTTO | 5 | 2020-05-15 4 | KARL | 3 | 2020-05-16 5 | EVA | 1 | 2020-05-16 6 | OTTO | 7 | 2020-05-16 7 | KARL | 5 | 2020-05-17 8 | EVA | 3 | 2020-05-17 9 | OTTO | 10 | 2020-05-17 Goal: Name|POINTS|2020-05-15|2020-05-16|2020-05-17 ---------------------------------------------------------- KARL|2|3|5 EVA|0|1|3 OTTO|5|7|10 My Code SELECT myname, SUBSTRING_INDEX(group_concat(concat(`points`) separator '|'), '|', 1) AS firstday, SUBSTRING_INDEX(SUBSTRING_INDEX(group_concat(concat(`points`) separator '|'), '|', 2), '|', -1) as secondday, SUBSTRING_INDEX(SUBSTRING_INDEX(group_concat(concat(`points`) separator '|'), '|', 3), '|', -1) AS lastday FROM (select * from mytable where mydate >= '2020-05-15' order by myname, mydate) tmp group by myname
Это работает, я думаю, с этим кодом.
Я хочу добавить новый colum в таблицу, например команды
ID | ИМЯ | КОМАНДА |ОЧКИ| ДАТА
-----------------------------------
1 | КАРЛ | TEAM1 | 2 | 2020-05-15
2 | EVA | TEAM2 | 0 | 2020-05-15
3 | OTTO | TEAM3 | 5 | 2020-05-15
4 | КАРЛ | TEAM1 | 3 | 2020-05-16
5 | EVA | TEAM2 | 1 | 2020-05-16
6 | OTTO | TEAM3 | 7 | 2020-05-16
7 | КАРЛ | TEAM2 | 5 | 2020-05-17
8 | EVA | TEAM2 | 3 | 2020-05-17
9 | OTTO | TEAM3 | 10 | 2020-05-17
Таким образом, результат должен выглядеть следующим образом
Имя|команда||очки|2020-05-15|2020-05-16|2020-05-17
----------------------------------------------------------
КАРЛ|TEAM2|2|3|5
ЕВА|TEAM2|0|1|3
ОТТО|TEAM3|5|7|10
С моим кодом этот сопляк работает правильно. Смена команд приводит к тому, что новая команда не появляется и очки не правильно подобраны.
Он выбирает последние 3 значения для точек, но помещает текущее значение для точек на ту дату, когда было сделано изменение.
Подобный этому
Name|TEAM||POINTS|2020-05-15|2020-05-16|2020-05-17 ---------------------------------------------------------- KARL|TEAM2|5|3|5 I hope I explained it correct. I try to have a flexible selection so that changes of the team won't disturb the display of the points. Thank you very much With kind regards Tobi What I have tried: Checked manuel for stored procedures
Garth J Lancaster
Я думаю, вам нужно немного улучшить свой вопрос - например, почему TEAM2 является командой для Карла здесь "KARL|TEAM2|2|3|5-что ? - о'Кей, похоже, это последняя команда, в которой Карл был по дате или максимум по дате ..
Прямо сейчас я не вижу ни одного запроса, который сделал бы то, что вы просите, я могу думать о том, чтобы получить четкий список имен и фамилий команд по дате, а затем использовать курсор для перебора записей для члена команды, чтобы построить разделы точек и дат
кстати, ВТФ это transponation' ? может быть, вы имеете в виду "транспозицию"?