2017-11-20 1 views
0

Ich versuche, den SQL-Befehl zu finden, etwas zu tun, aber ich weiß nicht, wie ich es erklären soll, so werde ich ein Beispiel verwenden. Ich habe eine Tabelle wie folgt:get X Anzahl der nicht null Spalten als einzelne Zeichenfolge

| one | two | three | four | 
|-----|-----|-------|------| 
| a | h | i  | j | 
| b | k | l  |  | 
| c | m | n  | o | 
| d | p |  |  | 
| e | q |  |  | 
| f | r | s  |  | 
| g | t |  |  | 

ich neue Spalten erstellen müssen, die die erste Nicht-Null-Spalte von rechts nehmen und Art von Reverse es nach oben und Verbinden/die Felder verketten.

| one | 1-up | 2-up | 3-up | 
|-----|------|------|---------| 
| a | j | j, i | j, i, h | 
| b | l | l, k |   | 
| c | o | o, n | o, n, m | 
| d | p |  |   | 
| e | q |  |   | 
| f | s | s, r |   | 
| g | t |  |   | 

Für b, da Spalte four haben keine Daten nutzt three als der erste Wert. Gleiches gilt für die anderen Zeilen.

Ich hoffe, das macht Sinn. Ich weiß nicht, wie ich das sonst noch erklären soll.

+0

Sind 'j, i, k' &' s, t' falsch? Sind 'j, i, h' &' s, r' richtig? – Leran2002

+0

Woops. Vielen Dank. Fest, – IMTheNachoMan

Antwort

5

können Sie COALESCE wie folgt verwenden:

select one, COALESCE(four,three,two,'') as '1-up', 
COALESCE(four+','+three,three+','+two,'') as '2-up', 
COALESCE(four+','+three+','+two,'') as '3-up' 
from Table1 

SQL Fiddle Link Here

+0

Humm. Wenn ich also 10 Spalten hätte, müsste ich mehrere Teile für meine COALESCE haben? sechs + fünf + vier + drei + zwei + eins, fünf + vier + drei + zwei + eins, vier + drei + zwei + eins, etc ...? – IMTheNachoMan

Verwandte Themen