Teradata 通过一个查询输出3个聚合列

Teradata 通过一个查询输出3个聚合列,teradata,Teradata,我想计算3个列的工作日,每个列各有一个。 例如: 记录输入日期将计算记录创建日期和输入日期之间的工作日。 记录扫描日期将在记录创建日期和扫描日期之间计算 记录创建日期和INDX日期之间的INDX总线日。 我有一张日历表,上面有工作日指示器BUS_DT_IND='Y'和'N' 我希望一次输出所有三个端口 任何人都可以帮我解决这个问题 Select A.REC_ENTR_B_DY , B.REC_SCAN_B_DY , C.INDX_B_DY from (select EN

我想计算3个列的工作日,每个列各有一个。 例如:

记录输入日期将计算记录创建日期和输入日期之间的工作日。 记录扫描日期将在记录创建日期和扫描日期之间计算 记录创建日期和INDX日期之间的INDX总线日。 我有一张日历表,上面有工作日指示器BUS_DT_IND='Y'和'N'

我希望一次输出所有三个端口

任何人都可以帮我解决这个问题

Select A.REC_ENTR_B_DY
     , B.REC_SCAN_B_DY
     , C.INDX_B_DY 
  from (select ENTR_DT
             , REC_CREATED_DT
             , SUM(WHEN BUS_DT_IND='Y' then 1 else 0) as REC_ENTR_B_DY 
          from RECORD 
          join calendar 
            on calendar.Calendar_date between ENTR_DT and REC_CREATED_DT 
         group by 1,2) A 
    LEFT JOIN (select SCAN_DT
                          , REC_CREATED_DT
                          , SUM(WHEN BUS_DT_IND='Y' then 1 else 0) as REC_SCAN_B_DY 
                       from RECORD 
                       join calendar on calendar.Calendar_date between SCAN_DT and REC_CREATED_DT 
                      group by 1,2) B 
           on A.REC_CREATED_DT=B.REC_CREATED_DT 
    LEFT JOIN (select INDX_DT
                    , REC_CREATED_DT
                    , SUM(WHEN BUS_DT_IND='Y' then 1 else 0) as REC_SCAN_B_DY 
                 from RECORD 
                 join calendar 
                   on calendar.Calendar_date between INDX_DT and REC_CREATED_DT
                group by 1,2)C 
           on A.REC_CREATED_DT=C.REC_CREATED_DT

您是否有任何示例SQL没有产生预期的结果?我是通过自连接完成的。选择A.REC_ENTR_B_DY,B.REC_SCAN_DY,C.INDX_B_DY从Select ENTR_DT,REC_CREATED_DT,SUMWHEN BUS_DT_IND='Y'中选择A.REC_ENTR_DY,B.REC_SCAN_DY,C.INDX_DY,然后从日历上的记录连接日历中选择1.0作为记录连接日历。日历日期介于ENTR_DT和REC CREATED_DT组之间,由1,2A左外连接选择扫描,REC_CREATED_DT,SUMWHEN BUS_DT_IND='Y'然后1 else 0 as REC_SCAN_DY from RECORD join calendar on calendar.calendar_SCAN_DT和REC_CREATED_DT group之间的日期在A.REC_CREATED_DT=B.REC_CREATED_DT左外连接选择INDX_DT,REC CREATED_DT,SUMWHEN BUS_DT_IND='Y'然后1 else 0 as REC_SCAN_DY from RECORD join calendar on calendar.calendar_INDX_DT和REC_CREATED_DT group之间的日期在A.REC_CREATED_DT=C.REC_CREATED_DT上为1,2C此查询需要时间。因为我们有大约3000万条记录,这导致了巨大的中间结果,从开始到结束的平均天数是多少?然后加入一个非唯一列。。。