Teradata - Невозможно вложить агрегатные операции с регистром - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь выполнить следующий запрос:

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

Но ошибка запроса: Не удается вложить агрегатные операции.

Следует ли использовать другой тип запроса?

Ответы [ 3 ]

0 голосов
/ 29 января 2020

Если вы хотите получить счет по дате (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

Я забрал BI_NROCTA из group by, так как вы ' вы смотрите только на одно значение в вашем предложении 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
0 голосов
/ 29 января 2020

Это то, что вы ищете?

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
0 голосов
/ 29 января 2020

Я почти уверен, что вам нужна условная агрегация, подобная этой:

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;

Это подсчитывает записи на каждую дату.

...