2016-03-29 47 views
0

MySQL'de pivot gibi bir şey yapmaya çalışıyorum ama takılıyorum.MySQL grup satırları aynı satırda tek satırda

SELECT distinct 
    p.id, p.uuid, p.kpiDate, p.kpiTime, 
    CASE 
    WHEN p.subSysName = 'CMONE' THEN p.status 
    ELSE '' 
    END AS CMONE, 
    CASE 
    WHEN p.subSysName = 'DISODAY' THEN p.status 
    ELSE '' 
    END AS DISODAY, 
    CASE 
    WHEN p.subSysName = 'DIIN_HFFF' THEN p.status 
    ELSE '' 
    END AS DIIN_HFFF, 
    CASE 
    WHEN p.subSysName = 'DIIN_PAL' THEN p.status 
    ELSE '' 
    END AS DIIN_PAL, 
    CASE 
    WHEN p.subSysName = 'DISO_FAL' THEN p.status 
    ELSE '' 
    END AS DISO_FAL, 
    CASE 
    WHEN p.subSysName = 'MBATCH' THEN p.status 
    ELSE '' 
    END AS MBATCH, 
    CASE 
    WHEN p.subSysName = 'MO_BATCH' THEN p.status 
    ELSE '' 
    END AS MO_BATCH, 
    CASE 
    WHEN p.subSysName = 'QINTER' THEN p.status 
    ELSE '' 
    END AS QINTER, 
    CASE 
    WHEN p.subSysName = 'ZFIREWALL' THEN p.status 
    ELSE '' 
    END AS ZFIREWALL 

FROM subsys_stat p 
order by p.kpiDate, p.kpiTime 

bu sorgunun sonucu aşağıdaki gibidir:

first query

original Table

aşağıdaki sorgu ile startetd:

ben şöyle bir tablo var

Böylece her subSysName'i sütun olarak yerleştirdim.

sonraki adım aynı UUID ile her giriş şöyle, aynı satırda da olduğu, olması gerektiği:

result table

Bunu nasıl yapabilirim

? Bunu bir katılımla yapabilirim (JOIN subsys_stat b ON ap.uuid = b.uuid) ama bu işe yaramıyor.

+1

Max case – Strawberry

cevap

2

Sen sorguya gruplandırma eklemek gerekir:

SELECT MIN(p.id), p.uuid, p.kpiDate, p.kpiTime, 
     MAX(CASE WHEN p.subSysName = 'CMONE' THEN p.status END) AS CMONE, 
     MAX(CASE WHEN p.subSysName = 'DISODAY' THEN p.status END) AS DISODAY, 
    ... etc 
FROM subsys_stat p 
GROUP BY p.uuid, p.kpiDate, p.kpiTime 
ORDER BY p.kpiDate, p.kpiTime 

Ayrıca CASE ifadeleri MAX gibi toplu bir işlevi içinde kullanılmalıdır.

+0

Wow hakkında, bu çok kolay görünüyor ve çalışıyor. Şimdi sadece MAX'ın bu durumda ne yaptığını anlamak zorundayım. Çok teşekkürler. – LStrike

İlgili konular