Я получаю сообщение об ошибке -
can not nest aggregate operations when trying to run the below part of the query in Teradata.
Когда SeqCount = 2 и данные операции совпадают с данными первой операции, я хочу, чтобы дата второй операции (SecondSurgery) была равна нулю, иначе возвращались данные второй операции.
Любая помощь будет принята с благодарностью.
SELECT
pat_id,
PatientMRN,
PatientName,
AdmitDate,
DischargeDate,
MIN(case when SeqCount=1 then ORProcName else null end) as FirstProcedure,
MIN(case when SeqCount=1 then SurgeryDate else null end) as FirstSurgery,
MIN(case when SeqCount=2 then ORProcName else null end) as SecondProcedure,
MIN(case when SeqCount=2 and SurgeryDate = FirstSurgery then NULL else SurgeryDate end) as SecondSurgery
Вероятно, вам нужна комбинация qualify row_number() over (partition by pat_id order by SurgeryDate) = 1 и lead (или min) over, заменяющая агрегацию
Пожалуйста, предоставьте полный запрос, чтобы лучше понять вашу проблему.
Ваш запрос не имеет вложенных функций агрегирования и является неполным. Покажите (возможно, в упрощенной форме) ваш запрос, который иллюстрирует проблему.
Оператор CASE для SecondSurgery ссылается на FirstSurgery, который является агрегацией. Может ли это быть где вы идете боком?


поскольку ErrorMsg сообщает, что это невозможно из-за обработки на основе SET (все сразу). - Вы можете принудительно выполнить последовательную обработку с помощью подзапросов и вычислить SecondSurgery во внешнем SQL.
Использование
MINбезGROUP BYи при выборе других неагрегированных столбцов не имеет смысла. Пожалуйста, предоставьте образцы данных и ожидаемый результат.