Объединить несколько строк в одну строку в представлении MySQL - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть представление mysql, в котором 1 столбец повторяется в 4 строках, но другой столбец имеет другие значения.Я хочу объединить все 4 строки в 1, предоставив столбцам собственные имена.

enter image description here

Пример:

У меня Long_Desc повторено в 4 рядах с разными Nutr_Val и Nutr_No.Я хочу объединить все 4 строки, чтобы таблица выглядела как

NDB_No | Nutr_No | Nutr_Val | Long_Desc | PROCNT | FAT | CHODCDF | ENERC_KCAL

Так что я настроил Nutr_Val в этих последних 4 столбцах.

1 Ответ

0 голосов
/ 03 февраля 2019

Это можно решить с помощью условного агрегирования:

SELECT
    t.nbd_no,
    t.nutr_no,
    t.nutr_val,
    t.long_desc,
    MAX(CASE WHEN t.tagname = 'PROCNT'     THEN t.fdgrp_cd END) PROCNT,
    MAX(CASE WHEN t.tagname = 'FAT'        THEN t.fdgrp_cd END) FAT,
    MAX(CASE WHEN t.tagname = 'CHODCDF'    THEN t.fdgrp_cd END) CHODCDF,
    MAX(CASE WHEN t.tagname = 'ENERC_KCAL' THEN t.fdgrp_cd END) ENERC_KCAL 
FROM mytable t
GROUP BY
    t.nbd_no,
    t.nutr_no,
    t.nutr_val,
    t.long_desc
...