2013-03-06 6 views
6

I unter Datensätze in table1 habeDB2: Funktion fusionieren 3 Spaltenausgang

c1 c2 c3 
---------- 
A B C 

Wie c1 c2 und c3 verschmelzen, so dass die Ausgabe

ABC mit Platz zwischen dem Ausgang Ich mag würde gebrauchte concat-Funktion, aber seine Aufnahme nicht mehr als 3 Argumente wie

select concat (c1,c2,c3) from table1 

ich kann nicht laufen select * from table1 wie ich wan t Ausgabe in einer Spalte

Antwort

9

Diese in z/OS-Versionen zumindest funktioniert:

select c1 concat ' ' concat c2 concat ' ' concat c3 

Holen Sie sich das DB2 documentation

+1

Danke für die Lösung sowie die DB2-Dokumentation, Es hat mir wirklich geholfen. – Deepak

+1

Sie können auch '||' anstelle von 'concat' verwenden. –

3

versuchen Sie dies.

select concat(concat (c1,c2),c3) from table1 
+0

Diese cancat ist in meinem db2 v-9.7 nicht funktioniert, ist es eine Möglichkeit, mehr als 3 Spalte verketten – Deepak

+0

Ergebnisse, die ich viel Erfahrung nicht haben mit db2, aber meine Bearbeitung sollte helfen .. – Mortalus

+0

Ich habe gerade versucht, den folgenden Befehl in DB2 'concat (c1, concat (c2, c3)) aus table1' – Deepak

2

ich vor kurzem über das gleiche Problem kam zu wissen, habe ich die || (Doppelrohre), um zu Säulen zu gelangen.

Ich musste auch einen Wrapper in meine Abfrage schreiben, um das Problem zu beheben.

Unten ist ein Ausschnitt davon, wie meine Abfragen am Ende aussahen.

select a1 || a2 as a2, a3 || a4 as a4 --wrapper 2 
from (
select '"service":"' as a1,a2, '","total":' as a3, a4 --wrapper 1 
from (
select distinct(a2),count(*) as a4 
from abc.table 
group by a2 
order by a2) 
); 

Unten ist das, was der Ausgang aus der Abfrage war:

"service":"ABC" , "total":123 
+0

Rohre waren sie Weg für mich! –

0

ich von SQL in DB2 ein Problem hatte mit der Umwandlung. Diese Seite geholfen, aber ich am Ende eine kleine Änderung vornehmen:

SELECT 
RTRIM(C1) || '' || C2 as CFULL 
FROM TABLE