【问题标题】:Teradata Rows to Columns (Need to Merge Doubled Row Count)Teradata 行到列(需要合并双倍行数)
【发布时间】:2021-07-01 19:17:23
【问题描述】:

我有一个查询,我正在运行如下 -

SELECT 
item1,
item2,
item3,
CASE WHEN item4 = 'type A' THEN COUNT(DISTINCT field) END AS dcount_field_A,
CASE WHEN item4 = 'type B' THEN COUNT(DISTINCT field) END AS dcount_field_B,
FROM table
GROUP BY
item1
item2
item3
item4

我的输出是:

Item1 Item2 Item 3 dcount_field_B dcount_field_A
Item1Value1 Item2Value1 Item3Value1 NULL 1234
Item1Value1 Item2Value1 Item3Value1 1234 NULL

但我需要是合并这些行,例如:

Item1 Item2 Item 3 dcount_field_B dcount_field_A
Item1Value1 Item2Value1 Item3Value1 1234 1234

其他尝试调整:

  • 从组中删除 item4 给我一个错误 “已选择 非聚合值必须是关联组的一部分。”
  • PIVOT 在我的 teradata 版本中不是一个选项
  • 我也尝试过
  • 的子查询
    (SELECT
    COUNT(DISTINCT(CASE WHEN item4 = 'type A' THEN field END)) AS dcount_field_A,
    COUNT(DISTINCT(CASE WHEN item4 = 'type B' THEN field END)) AS dcount_field_B
    FROM table
    GROUP BY item4),

我收到错误“子查询的选择列表中的表达式太多。”

【问题讨论】:

    标签: sql pivot teradata transpose teradata-sql-assistant


    【解决方案1】:

    您需要条件聚合。 count(distinct) 看起来像这样:

    SELECT item1, item2, item3,
           COUNT(DISTINCT CASE WHEN item4 = 'type A' THEN field END) AS dcount_field_A,
           COUNT(DISTINCT CASE WHEN item4 = 'type B' THEN field END) AS dcount_field_B,
    FROM table
    GROUP BY item1, item2, item3;
    

    【讨论】:

      猜你喜欢
      • 2013-03-30
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多