Группа по varchar в MySQL - PullRequest
       4

Группа по varchar в MySQL

0 голосов
/ 17 декабря 2018

У меня есть запрос.

SELECT  
         sa.start_time,
    `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` 
FROM ( 
  SELECT  ders_saat,
         (CASE WHEN days= 1 THEN d.lesson_name ELSE 0 END) AS `Monday`, 
         (CASE WHEN days= 2 THEN d.lesson_name ELSE 0 END) AS `Tuesday`, 
         (CASE WHEN days= 3 THEN d.lesson_name ELSE 0 END) AS `Wednesday`, 
         (CASE WHEN days= 4 THEN d.lesson_name ELSE 0 END) AS `Thursday`, 
         (CASE WHEN days= 5 THEN d.lesson_name ELSE 0 END) AS `Friday`
      FROM ders_programi
      inner join lessons d on d.id = lesson_id

) AS sums
left join hours sa on sa.start_time = sums.ders_saat

Результат: 5 строк

start_time  Monday Tuesday Wednesday Thursday Friday
08:00:00    Math    0         0         0       0
08:50:00    null    null      null      null    null                        
09:40:00    Math    0         0         0       0
10:30:00    Prog    0         0         0       0
10:30:00    0       Geo       0         0       0

Результат, который я хочу: 4 строки

start_time  Monday Tuesday Wednesday Thursday Friday
08:00:00    Math    0         0         0       0
08:50:00    null    null      null      null    null            
09:40:00    Math    0         0         0       0
10:30:00    Prog    Geo       0         0       0

Как мне это сделать?этот?Я пробовал group by start_time и concat, но это не сработало.

Я использовал возврат по группам по 4 рядам.Но последний ряд: 10:30:00 Prog 0 0 0 0

1 Ответ

0 голосов
/ 17 декабря 2018
SELECT  sa.start_time,
        max(`Monday`) as Monday,
        max(`Tuesday`) as  Tuesday, 
        max(`Wednesday`) as Wednesday,
        max(`Thursday`) as Thursday,
        max(`Friday`) as Friday 
FROM ( 
  SELECT  ders_saat,
         (CASE WHEN days= 1 THEN d.lesson_name ELSE 0 END) AS `Monday`, 
         (CASE WHEN days= 2 THEN d.lesson_name ELSE 0 END) AS `Tuesday`, 
         (CASE WHEN days= 3 THEN d.lesson_name ELSE 0 END) AS `Wednesday`, 
         (CASE WHEN days= 4 THEN d.lesson_name ELSE 0 END) AS `Thursday`, 
         (CASE WHEN days= 5 THEN d.lesson_name ELSE 0 END) AS `Friday`
      FROM ders_programi
      inner join lessons d on d.id = lesson_id
) AS sums
left join hours sa on sa.start_time = sums.ders_saat
group by sa.start_time
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...