2016-04-25 8 views
1

サンプルカウンタの順番とIDフィールドに基づいて列連結を実行しようとしています。以下はデータの例ですNetezza-別の列からの注文に基づいて単一列から異なる値を連結

**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 

これは私が下にしたいものです。だから私はあなたが言うことができると思うサンプルカウンタを上昇させることによってそれを連結したい。

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

ヒートIDごとに同じ種類のサンプルタイプが存在するわけではなく、サンプルタイプの順序が異なるようにデータが構成されています。サンプルカウンタは、異なるサンプルタイプが使用されているとき(注文)です。どんな助けでも大歓迎です。ありがとうございました!

+0

ご使用のデータベースに質問にタグを付けてください。 –

+0

[tag:rdbms]は何を使用していますか? – Mureinik

答えて

0

これにはいくつかの方法があります。文字列の集約は、通常、データベースに固有です。ただし、カウンター列では条件付き集計が可能です。

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; 

最大サンプルカウンタには、十分な条件文が必要です。

また、一部のデータベースでは||+と綴り、さらにはconcat()機能を明示的に使用する必要があります。

+0

それは完璧に働いた、ありがとうゴードン! – Drew

関連する問題