【问题标题】:Teradata SQL pivot multiple results and eliminate duplicate valuesTeradata SQL 透视多个结果并消除重复值
【发布时间】:2013-10-04 01:15:40
【问题描述】:

我有这样的事情:

ID      Result
1       value1
2       value1
2       value2
3       value1
3       value1
4       value1
4       value2
4       value3

请注意,ID 3 有相同的结果出现在两行中。

感谢 bluefeet (teradata sql pivot multiple occurrences into additional columns),我能够制作出这样的东西:

ID      Result1      Result2      Result3
1       value1
2       value1       value2
3                    value1
4       value1       value2       value3

我得到了我想要的,但是因为 ID 3 有多个结果,所以它们被计为 2,然后包含在第二列中,这是针对一个 ID 返回 2 次的结果。

我想做的只是在 Result1 列中返回第一次出现的重复 ID 3 结果,如下所示:

ID      Result1      Result2      Result3
1       value1
2       value1       value2
3       value1
4       value1       value2       value3

如何消除重复的结果并防止其计数?

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    TD14.10 最终添加了 DENSE_RANK(可以在 bluefeet 的查询中使用它来代替 ROW_NUMBER),但在您必须添加某种 DISTINCT 处理之前,例如:

    SELECT id,
       MAX(CASE WHEN seq =1 THEN res END) result1,
       MAX(CASE WHEN seq =2 THEN res END) result2,
       MAX(CASE WHEN seq =3 THEN res END) result3
    FROM
     (
       SELECT id, res, ROW_NUMBER() OVER(PARTITION BY id ORDER BY res) seq
       FROM
        (
          SELECT DISTINCT id, res
          FROM yourtable
        ) d
     ) d
    GROUP BY id
    ORDER BY id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 2021-11-16
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      相关资源
      最近更新 更多