2016-06-10 14 views
0

Ich habe auf die Bretter geschaut und gegoogelt ein Bündel, aber ich kann ein Szenario nicht finden, das meins passt. Ich habe 4 SpaltenKombinieren mehrerer Spalten in eine lange Spalte

+--------+------+------+ 
| empnum | appn | rate | 
+--------+------+------+ 
| 13 | 1111 |12.34 | 
+--------+------+------+ 
| 13 | 2222 |14.44 | 
+--------+------+------+ 
| 13 | 3333 |15.62 | 
+--------+------+------+ 
| 13 | 4444 |16.12 | 
+--------+------+------+ 

jede Spalte hat die gleiche Mitarbeiternummer, aber unterschiedliche Informationen. Ich versuche, diese 4 Spalten in 1 zu kombinieren. Das einzige, was ich finden konnte, war die Verkettung. Aber das wird für mich nicht funktionieren, weil diese in ein Array gehen müssen, damit ich es in Datatables erstellen kann. Ich möchte, dass es so aussieht.

+------+-----+-----+-----+-----+-----+-----+-----+-----+ 
|empnum|appn1|rate1|appn2|rate2|appn3|rate3|appn4|rate4| 
+------+-----+-----+-----+-----+-----+-----+-----+-----+ 
| 13 |1111 |12.34|2222 |14.44|3333 |15.62|4444 |16.12| 
+------+-----+-----+-----+-----+-----+-----+-----+-----+ 

Vor einer Woche stammten alle diese Informationen aus einer flachen Datei. Ein Kollege hat einen relationalen Tisch erstellt, und dann explodierte mein Gehirn. Wir arbeiten an Db2 und ich habe versucht, dies in PHP mit einem Foreach zu tun, um durch das Array zu durchlaufen und nach dem Empnum zu suchen, aber ich würde das gleiche appn1 für jede Person bekommen. Ich würde es gerne tun sql Ich kann mir einfach nicht vorstellen, wie.

+0

u müssen Zeilendaten in Spaltendaten überprüfen Sie diesen Link konvertieren aussehen sollte: http://stackoverflow.com/questions/14834290/mysql-query-to-column-rows-to-columns – MAK

+0

Ihre Google-Probleme könnten sein, dass Sie den Begriff "Spalte" verwenden, wenn Sie "Zeile" – Hogan

Antwort

0

Was Sie wollen, ist Pivot Ihre Daten. DB2 verfügt nicht über eine PIVOT-Funktion, aber Sie können DECODE verwenden, um dies zu erreichen. Hier einige Beispiele in another question.

Die Ergebnismenge würde etwa so aussehen:

+------+-----+-----+-----+-----+-----+-----+ 
|empnum|appn1111|appn2222|appn3333|appn4444| 
+------+--------+--------+--------+--------+ 
| 13 |12.34 |14.44 |15.62 |16.12 | 
+------+--------+--------+--------+--------+ 
+0

lesen über den Drehpunkt bedeuten. aber wenn ich das oben tun würde, könnte ich appn in ein Array-Element bekommen – moe

0

Sie auch diese mit LISTAGG tun könnte eine durch Kommata getrennte Liste zu bekommen.

So:

SELECT empnum, LISTAGG(TO_CHAR(appn) || ' - ' || TO_CHAR(rate), ', ') as a_list_4_u 
FROM mytable 

Das Ergebnis wie dieses

+--------+--------------------------------------------------------+ 
| empnum |              2 | 
+--------+--------------------------------------------------------+ 
| 13 | 1111 - 12.34, 2222 - 14.44, 3333 - 15.62, 4444 - 16.12 | 
+--------+--------------------------------------------------------+ 
Verwandte Themen