2016-07-18 14 views
1

Ich habe eine Tabelle, die drei Spalten enthältConcatenate Zeichenfolge in einem bestimmten Format in SQL

A.   B.   C. 
Abc.  Abc.   1 
Abc.  Abc.   2 
Abc.  Abc.   3 
Bcd.  Bcd.   4 
Cde.  Cde.   2 
Cde.  Cde.   4 
Cde.  Cde.   4  

Ich möchte sie als eine einzige Zeile zu machen, wie folgend

A.   B.   C. 
Abc.  Abc.   1/2/3/- 
Bcd.  Bcd.   -/-/-/4 
Cde.  Cde.   -/2/-/4 

Kann mir jemand bitte helfen ? Maximale Anzahl ist 4 für C-Spalte. Also der beste Fall ist 1/2/3/4.Und wenn irgendeine Wiederholung in C innerhalb der gleichen Gruppe von A und B Spalte ist, dann sollte es als eine wie im Fall der letzten zwei Zeilen

+0

Es ist klar, dass ich die Zeilen gruppieren möchten, um eine bestimmte Formatausgabe für C zu erhalten. Spalte – vatsal

+0

Völlig unklar, was Sie tun möchten und wie. – Eiko

Antwort

2

Dies ist a etwas schwierig. Hier ist eine Methode:

select a, b, 
     concat_ws('/', 
       (case when sum(c = 1) > 0 then 1 else '-' end), 
       (case when sum(c = 2) > 0 then 1 else '-' end), 
       (case when sum(c = 3) > 0 then 1 else '-' end), 
       (case when sum(c = 4) > 0 then 1 else '-' end) 
       ) as cs 
from t 
group by a, b 
0

Sie tally Tabelle verwenden könnte und GROUP_CONCAT:

SELECT s.A, s.B,GROUP_CONCAT(COALESCE(m.C, '-') ORDER BY s.n SEPARATOR '/') AS C 
FROM mytable m 
RIGHT JOIN (
    SELECT A,B, sub.n 
    FROM (SELECT DISTINCT A,B FROM mytable) t 
    CROSS JOIN (SELECT 1 n UNION ALL SELECT 2 UNION ALL 
       SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL 
       SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL 
       SELECT 9 UNION ALL SELECT 10) AS sub) s 
    ON m.A = s.A 
    AND m.B = s.B 
    AND m.C = s.n 
WHERE s.n <= (SELECT MAX(C) FROM mytable) 
GROUP BY s.A, s.B; 

SqlFiddleDemo

Ausgang:

A  B   C  
------- ------- --------- 
    Abc. Abc. 1/2/3/- 
    Bcd. Bcd. -/-/-/4 
    Cde. Cde. -/2/-/4 

Wenn Sie mehr Werte haben, erhöhen Sie einfach den Tally-Tabellenbereich.

+0

Entschuldigung, aber ich benutze SAP HANA Umgebung und Concat_Gruppe ist nicht in dieser – vatsal

+0

ich meine group_concat – vatsal

Verwandte Themen