Teradata - 无法使用大小写嵌套聚合操作

Teradata - Cannot nest aggregate operations with case

我正在尝试 运行 以下查询:

select BI_NROCTA,
MAX(CASE WHEN FECHA_REGISTRO='2019-12-01' THEN COUNT(TRAMO) ELSE 0 END) "2019-12-01",
MAX(CASE WHEN FECHA_REGISTRO='2019-12-02' THEN COUNT(TRAMO) ELSE 0 END) "2019-12-02",
MAX(CASE WHEN FECHA_REGISTRO='2019-12-03' THEN COUNT(TRAMO) ELSE 0 END) "2019-12-03"

from DL_RG_ANALYTICS.SH_MORA_OSC_2 
WHERE BI_NROCTA='0004890702108691953'
GROUP BY BI_NROCTA,TRAMO,FECHA_REGISTRO

但是查询错误: 无法嵌套聚合操作。

我应该使用其他查询类型吗?

我很确定你想要这样的条件聚合:

select BI_NROCTA, TRAMO,
       SUM(CASE WHEN FECHA_REGISTRO = '2019-12-01' THEN 1 ELSE 0 END) as "2019-12-01",
       SUM(CASE WHEN FECHA_REGISTRO = '2019-12-02' THEN 1 ELSE 0 END) as "2019-12-02",
       SUM(CASE WHEN FECHA_REGISTRO = '2019-12-03' THEN 1 ELSE 0 END) as "2019-12-03"
from DL_RG_ANALYTICS.SH_MORA_OSC_2 
WHERE BI_NROCTA = '0004890702108691953'
GROUP BY BI_NROCTA, TRAMO;

这会计算每个日期的记录。

如果您想按日期 (FECHA_REGISTRO) 获取计数,您可以这样做:

select FECHA_REGISTRO, COUNT(TRAMO)
from DL_RG_ANALYTICS.SH_MORA_OSC_2 
where BI_NROCTA='0004890702108691953'
and FECHA_REGISTRO in ('2019-12-01','2019-12-02','2019-12-03')
group by FECHA_REGISTRO

我从 group by 中删除了 BI_NROCTA,因为您只查看 where 子句中的一个值。

已更新
这将得到 TRAMO:

不同值的结果
select FECHA_REGISTRO, TRAMO, COUNT(*)
from DL_RG_ANALYTICS.SH_MORA_OSC_2 
where BI_NROCTA='0004890702108691953'
and FECHA_REGISTRO in ('2019-12-01','2019-12-02','2019-12-03')
group by FECHA_REGISTRO, TRAMO

这是您要找的吗?

select
BI_NROCTA,
max("2019-12-01"),
...
from
(
select
BI_NROCTA,
count (CASE WHEN FECHA_REGISTRO='2019-12-01' THEN (TRAMO) ELSE null END) as "2019-12-01",
...
from DL_RG_ANALYTICS.SH_MORA_OSC_2 
WHERE BI_NROCTA='0004890702108691953'
GROUP BY BI_NROCTA --other group by columns not needed
) t
group by
BI_NROCTA