Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Создание запроса с пользовательскими колонками из значений полей / 7 сообщений из 7, страница 1 из 1
13.11.2019, 09:26
    #39888409
miletoda
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса с пользовательскими колонками из значений полей
Доброго времени суток.
Прошу помочь в составлении запроса SQL для следующих условий:
имеется таблица (во вложении слева). Требуется на стороне сервера получить эту таблицу с учетом разбивки по столбцам в зависимости от значения поля ВЫПУСК (во вложении справа).
Предполагаю, что требуется использование CASE для каждого поля пользовательской таблицы и группировка по КОМПЛЕКТ?
...
Рейтинг: 0 / 0
13.11.2019, 09:56
    #39888438
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса с пользовательскими колонками из значений полей
Если "выпуск" ограничивается только значениями А1/А2 - то да, на кейсах.
Иначе - процедура и динамический SQL внутри.
...
Рейтинг: 0 / 0
13.11.2019, 10:39
    #39888460
miletoda
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса с пользовательскими колонками из значений полей
С процедурами никогда не работал - можете подсказать пример показать как должно строиться?
...
Рейтинг: 0 / 0
13.11.2019, 11:52
    #39888518
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса с пользовательскими колонками из значений полей
...
Рейтинг: 0 / 0
14.11.2019, 02:11
    #39888870
miletoda
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса с пользовательскими колонками из значений полей
Akina, на кейсах получился следующий вариант, но он выводит только данные для ревизии А1. Как "поймать" ревизию А2?
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT Комплект,
  (CASE Выпуск WHEN 'А1' THEN Дата_выпуска end) AS A1_Дата_выпуска,
  (CASE Выпуск WHEN 'А1' THEN Дата_ответа end) AS A1_Дата_ответа,
  (CASE Выпуск WHEN 'А2' THEN Дата_выпуска end) AS A2_Дата_выпуска,
  (CASE Выпуск WHEN 'А2' THEN Дата_ответа end) AS A2_Дата_ответа
FROM test
GROUP BY комплект
...
Рейтинг: 0 / 0
14.11.2019, 07:31
    #39888887
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса с пользовательскими колонками из значений полей
miletoda,

Агрегатную функцию забыли указать, например, MAX. Поэтому данные для негрупповых полей взялись из случайной записи.
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT Комплект,
  MAX(CASE Выпуск WHEN 'А1' THEN Дата_выпуска end) AS A1_Дата_выпуска,
  MAX(CASE Выпуск WHEN 'А1' THEN Дата_ответа end) AS A1_Дата_ответа,
  MAX(CASE Выпуск WHEN 'А2' THEN Дата_выпуска end) AS A2_Дата_выпуска,
  MAX(CASE Выпуск WHEN 'А2' THEN Дата_ответа end) AS A2_Дата_ответа
FROM test
GROUP BY комплект
...
Рейтинг: 0 / 0
14.11.2019, 09:10
    #39888899
miletoda
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание запроса с пользовательскими колонками из значений полей
miksoft, спасибо, теперь все работает как надо!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Создание запроса с пользовательскими колонками из значений полей / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]