Mysql отображает даты в виде столбца в отчете

В настоящее время я показываю еженедельный отчет только с 7 столбцами для заданного диапазона дат недели.

Диапазон дат строго вводится из средства выбора даты jQuery всего за неделю.

user   1   |   2   |   3   |   4   |   5   |   6   |   7
---------------------------------------------------------
132    0   |   0   |   0   |   1   |   1   |   0   |   1
133    0   |   1   |   1   |   1   |   0   |   0   |   0
134    1   |   1   |   1   |   0   |   1   |   0   |   0
135    1   |   0   |   1   |   1   |   0   |   0   |   0

Теперь я хочу ввести любой диапазон дат (а не только диапазон недель) и отобразить записи следующим образом:

user   2018-06-03   |   2018-06-04   |   2018-06-05   |   2018-06-06   |   2018-06-07   |   2018-06-08   |   2018-06-09   |   2018-06-10   |   ...
---------------------------------------------------------------------------------------------------------------------------------------------
132   0            |       0        |       1        |       1        |       1        |       1        |       0        |       1        |
133   0            |       0        |       0        |       1        |       1        |       1        |       1        |       1        |
134   0            |       1        |       0        |       1        |       1        |       1        |       1        |       0        |
135   0            |       1        |       1        |       1        |       1        |       1        |       1        |       0        |
136   0            |       0        |       1        |       0        |       1        |       1        |       1        |       1        |

Чтобы в настоящее время отображать отчет за 7 дней в неделю, вот мой сценарий запроса:

SELECT userId as user,
SUM(CASE WHEN day = 1 THEN lunchStatus ELSE 0 END) '1',
    SUM(CASE WHEN day = 2 THEN lunchStatus ELSE 0 END) '2',
    SUM(CASE WHEN day = 3 THEN lunchStatus ELSE 0 END) '3',
    SUM(CASE WHEN day = 4 THEN lunchStatus ELSE 0 END) '4',
    SUM(CASE WHEN day = 5 THEN lunchStatus ELSE 0 END) '5',
    SUM(CASE WHEN day = 6 THEN lunchStatus ELSE 0 END) '6',
    SUM(CASE WHEN day = 7 THEN lunchStatus ELSE 0 END) '7'
FROM
(
    SELECT userId, lunchStatus, DAYOFWEEK(issuedDateTime) as day 
    FROM `lunch_status` 
    WHERE DATE(issuedDateTime) BETWEEN '$week_start_date' AND '$week_end_date' 
) as a
GROUP BY user

Как мне обновить свой запрос, чтобы получить то, что мне нужно.

Я как бы застрял здесь со всем диапазоном дат.

Любая помощь приветствуется. Спасибо.

См .: Почему я должен предоставлять MCVE для того, что мне кажется очень простым SQL-запросом?. Тем не менее, я почти наверняка справлюсь с такими вещами в коде приложения.

Strawberry 15.06.2018 12:05

Вам необходимо использовать динамический SQL (prepare / exec), если вы хотите иметь имена столбцов переменных.

Gordon Linoff 15.06.2018 12:40
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
73
0

Другие вопросы по теме