【发布时间】:2019-03-13 19:31:16
【问题描述】:
我收到一个错误 -
尝试在 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
【问题讨论】:
-
您在没有
GROUP BY的情况下使用MIN,并且在选择其他非聚合列时没有意义。请提供示例数据和预期输出。 -
您可能需要
qualify row_number() over (partition by pat_id order by SurgeryDate) = 1和lead(或min)over的组合替换聚合 -
请提供完整的查询,以便更好地了解您的问题。
-
您的查询没有嵌套聚合函数并且不完整。显示(可能是简化形式)说明问题的查询。
-
SecondSurgery的 CASE 语句引用FirstSurgery这是一个聚合。这可能是你要横着走的地方吗?