Есть таблица какие люди когда приходят. В таблице данные лежат как на фото1
Как вывести как на фото2?
Здесь решаем две задачи.
Во-первых, следует в отдельном столбце num
пронумеровать строки с людьми по каждому дню недели.
Во-вторых, создать pivot-таблицу, прогруппировав записи по столбцу num
.
Код такой:
SELECT
MAX(CASE WHEN day = 'понедельник' THEN name ELSE '' END) AS `понедельник`,
MAX(CASE WHEN day = 'вторник' THEN name ELSE '' END) AS `вторник`,
MAX(CASE WHEN day = 'среда' THEN name ELSE '' END) AS `среда`
FROM (
SELECT
@row_number:=CASE
WHEN @day_name = day THEN @row_number + 1
ELSE 1
END AS num,
@day_name:=day as day,
name
FROM
test
ORDER BY day, name
) t
GROUP BY num
Данное решение работает на любой версии MySQL. Для MySQL 8 оно может быть прооптимизировано.
Рабочий пример - на SQLFiddle
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как сделать запрос так что бы в результате мне вышла таблица где product_id соответствовал бы одновременно 2 условиям например attribute_id = 12 и attribute_id...
Пытаюсь подключиться к базе данных через intellij idea, при нажатии на test connection получаю ошибку Connection to MySQL - mydb@localhost failed[08001] Could not create connection to database...