Netezza - 根据来自另一列的顺序连接来自单个列的不同值
Netezza- Concatenate Different Values from Single Column based on Order from another Column
我正在尝试根据样本计数器的顺序和 ID 字段进行列连接。下面是数据的例子
**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 都具有相同数量的样本类型,并且样本类型的顺序不同。样品计数器是在使用不同的样品类型(订单)时。任何帮助将不胜感激。谢谢!
有几种方法可以解决这个问题。字符串聚合通常是特定于数据库的。但是,计数器列允许条件聚合:
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()
函数。
我正在尝试根据样本计数器的顺序和 ID 字段进行列连接。下面是数据的例子
**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 都具有相同数量的样本类型,并且样本类型的顺序不同。样品计数器是在使用不同的样品类型(订单)时。任何帮助将不胜感激。谢谢!
有几种方法可以解决这个问题。字符串聚合通常是特定于数据库的。但是,计数器列允许条件聚合:
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()
函数。