Группировать столбцы данных SQL в строки - PullRequest
0 голосов
/ 21 сентября 2018

Я хотел бы переключить столбцы базы данных MySQL на строки.

Для текущей базы данных с такой структурой:

id    date    category    subcategory    value
001    date1    cat1        sub1        X
002    date1    cat1        sub2        X
003    date1    cat1        sub3        X
004    date1    cat2        sub1        X
005    date1    cat3        sub1        X
006    date1    cat3        sub2        X

И я хотел бы получить это в результате:

date    cat1_sub1    cat1_sub2    cat1_sub3    cat2_sub1    cat3_sub1    cat3_sub2
date1        X           X            X            X            X            X

База данных довольно тяжелая, так что выполнение этого сценарием займет вечность, поэтому возможно ли это сделать с помощью запроса MySQL?

Например, мой SQLзапрос:

SELECT 
    DATE_FORMAT(FROM_UNIXTIME(data.timestamp), '%d %m %Y %h:%i:%s') as timestamp, 
    data_sub_category.designation as sub, 
    data_key.designation as dkey, 
    data_row.value as value
FROM data, data_row, data_sub_category, data_key, data_category
WHERE data.id = data_row.id_data
  AND data_category.id = data_row.id_data_category
  AND data_sub_category.id = data_row.id_data_sub_category
  AND data_key.id = data_row.id_data_key
  AND data_row.id_data_sub_category IN (1,2,3,22,1,2,3,22) 
  AND data_row.id_data_key IN (3,4,5,6,9,10,11,12,15,16,17,18,92,93,94,95,96,97,98,99,100,101,3,4,5,6,9,10,11,12,15,16,17,18,92,93,94,95,96,97,98,99,100,101) 
  AND data.timestamp BETWEEN 1536271200 AND 1536357540
ORDER BY data.timestamp

Спасибо за ваши советы

...