【问题标题】:Netezza- Concatenate Different Values from Single Column based on Order from another ColumnNetezza-根据来自另一列的顺序连接来自单个列的不同值
【发布时间】:2016-08-19 06:19:31
【问题描述】:

我正在尝试根据样本计数器的顺序和 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 都具有相同数量的样本类型,并且样本类型的顺序不同。样品计数器是使用不同的样品类型(订单)时。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 请用您正在使用的数据库标记您的问题。
  • 你在用什么rdbms

标签: sql netezza


【解决方案1】:

有几种方法可以解决这个问题。字符串聚合通常是特定于数据库的。但是,计数器列允许条件聚合:

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() 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多