2016-04-25 26 views
1

Ich versuche eine Spaltenverkettung basierend auf der Reihenfolge von Sample Counter und nach ID-Feld durchzuführen. Unten ist ein Beispiel für die DatenNetezza- Verketten unterschiedlicher Werte von einer einzelnen Spalte basierend auf der Reihenfolge von einer anderen Spalte

**Heat ID** **Sample Type** **Sample Counter** 
    466170   T1    2 
    466170   L0    3 
    466170   C1    4 
    466170   V2    1 
    580910   C1    1 
    580910   L0    2 
    580910   T1    3 

Dies ist, was ich will unten. Also möchte ich es durch aufsteigende Sample Counter verkettet haben, denke ich könnte man sagen.

**Heat ID** **Concat Code** 
    466170  V2_T1_L0_C1 
    580910  C1_L0_T1 

Die Daten sind so strukturiert, dass nicht jede Heat-ID die gleiche Anzahl von Sample-Typen und die Sample-Typen in anderer Reihenfolge aufweisen. Beispielzähler ist, wenn der andere Probentyp verwendet wird (Die Bestellung). Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

+0

Bitte kennzeichnen Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. –

+0

Was [tag: rdbms] verwenden Sie? – Mureinik

Antwort

0

Es gibt mehrere Möglichkeiten, dies zu erreichen. Die String-Aggregation ist im Allgemeinen eher datenbankspezifisch. Jedoch erlauben die Zählerspalt bedingte Aggregation statt:

select heatid, 
     (max(case when samplecounter = 1 then sample_type else '' end) || 
     max(case when samplecounter = 2 then '_' || sample_type else '' end) || 
     max(case when samplecounter = 3 then '_' || sample_type else '' end) || 
     max(case when samplecounter = 4 then '_' || sample_type else '' end) || 
     max(case when samplecounter = 5 then '_' || sample_type else '' end) 
     ) as concat_code 

from t 
group by heatid; 

Hinweis Sie müssen genügend bedingte Anweisungen für die maximalen Probenzähler.

Auch einige Datenbanken buchstabieren || als + oder erfordern sogar die explizite Verwendung einer concat()-Funktion.

+0

Das hat perfekt funktioniert, vielen Dank Gordon! – Drew

Verwandte Themen