Таблицы данных объединяют данные из разных столбцов в одну строку - PullRequest
0 голосов
/ 11 мая 2018

См. Изображение ниже, как объединить все главы в одну строку с другим номером страницы?

enter image description here

например,
Страница 1 имеет 3 строки, поскольку существует3 данных в столбцах chp 8,9,10
Страница 2 состоит из 5 строк, поскольку в столбцах chp 8,9,1,1,12

5 данных. Итак, как получить одну строкукаждого номера страницы и всех данных, размещенных на их собственном chp?

Basic SQL, как показано ниже:

SELECT  `mc_ee_page_id` as Page,
 IF ( mc_ee_chp_id = 1,  ( CASE 
 WHEN (is_marked = 0 and mk_no_mark = 1 ) THEN  "Y"  
 WHEN (is_marked = 1 and mk_no_mark = -1) THEN  "N" 
 WHEN (is_marked = 1 and mk_no_mark = 1 ) THEN  "O"  ELSE "X"
 END  ) , "" ) AS chp_1 ,

IF ( mc_ee_chp_id = 2,  ( CASE 
 WHEN (is_marked = 0 and mk_no_mark = 1 ) THEN  "Y"  
 WHEN (is_marked = 1 and mk_no_mark = -1) THEN  "N" 
 WHEN (is_marked = 1 and mk_no_mark = 1 ) THEN  "O"  ELSE "X"
 END  ) , "" ) AS chp_2 ,

IF ( mc_ee_chp_id = 3,  ( CASE 
 WHEN (is_marked = 0 and mk_no_mark = 1 ) THEN  "Y"  
 WHEN (is_marked = 1 and mk_no_mark = -1) THEN  "N" 
 WHEN (is_marked = 1 and mk_no_mark = 1 ) THEN  "O"  ELSE "X"
 END  ) , "" ) AS chp_3 ,
:
:
IF ( mc_ee_chp_id = 12,  ( CASE 
 WHEN (is_marked = 0 and mk_no_mark = 1 ) THEN  "Y"  
 WHEN (is_marked = 1 and mk_no_mark = -1) THEN  "N" 
 WHEN (is_marked = 1 and mk_no_mark = 1 ) THEN  "O"  ELSE "X"
 END  ) , "" ) AS chp_12 

FROM `maxcare_mc_ee_hw` 
WHERE `stud_id` = '3312' AND `mc_ee_level_id` = '1'  

GROUP BY mc_ee_chp_id, mc_ee_page_id
ORDER BY  mc_ee_page_id asc
LIMIT 500 

1 Ответ

0 голосов
/ 12 мая 2018

Одним из способов будет GROUP результат вашего SQL, сделав его подзапросом внешнего запроса ...

SELECT Page, MAX(chp_1) AS chp_1, MAX(chp_2) AS chp_2, MAX(chp_3) AS chp_3, MAX(chp_4) AS chp_4, MAX(chp_5) AS chp_5, MAX(chp_6) AS chp_6, MAX(chp_7) AS chp_7, MAX(chp_8) AS chp_8, MAX(chp_9) AS chp_9, MAX(chp_10) AS chp_10, MAX(chp_11) AS chp_11, MAX(chp_12) AS chp_12
FROM
(

-- *** paste your SQL in here ***

) AS indivdual_rows
GROUP BY Page

Предполагается, что страница не может иметь более одного непустого значениядля той же главы.Если это не так, то он покажет только алфавитное значение MAX.

Нажмите здесь , чтобы перейти к SQL Fiddle , чтобы увидеть его в действии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...