【发布时间】: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