根据 3 个变量和语法错误计算间隔天数

Calculate Days Between Based on 3 Variables & Syntax Error

我希望你能就几个问题提供一些见解:

问题 1 - 我在 Teradata 中收到以下错误消息 运行: “语法错误,在整数和 'then' 关键字之间需要类似 ')' 的内容。”

我的数据中有一些重复的记录,我想说的是,如果满足所有条件,则年龄天数等于 1,否则,计算天数。

问题 2 - date_diff 计算不正确(参见 table)

Date_Phase_Modified Historical_Phases Date_Diff
1/4/2021 20:33 Closed shows 0 - want to see 1
1/4/2021 20:32 Implement 63 - this is correct
12/1/2020 18:34 Implement shows 29 - want to see 0
11/2/2020 18:20 Implement 0 - this is correct
10/21/2020 20:07 Early Stage shows 0 - want to see 1
10/21/2020 20:06 Early Stage 0 - this is correct
10/21/2020 19:59 Early Stage 0 - this is correct
CASE when((
MAX(cast(Date_Phase_Modified as date format 'MM/DD/YYYY')) - MIN(cast(Date_Phase_Modified as date format 'MM/DD/YYYY')) 
            over (partition by F.oprty_key_nbr, Historical_Phases order by Historical_Phases, Date_Phase_Modified asc) Day(4)) = 0 then 1 else 
            
MAX(cast(Date_Phase_Modified as date format 'MM/DD/YYYY')) - MIN(cast(Date_Phase_Modified as date format 'MM/DD/YYYY')) 
            over (partition by F.oprty_key_nbr, Historical_Phases order by Historical_Phases, Date_Phase_Modified asc) Day(4)) 

end as Age_In_Phase,

这似乎符合您的预期结果:

CASE 
  WHEN Date_Phase_Modified = -- for latest row per phase
                      Max(Date_Phase_Modified) Over (PARTITION BY F.oprty_key_nbr, Historical_Phases ) 
  THEN -- return duration of phase, but at least 1 day
       Greatest( Cast(Max(Date_Phase_Modified) Over (PARTITION BY F.oprty_key_nbr, Historical_Phases ) AS DATE)
                -Cast(Min(Date_Phase_Modified) Over (PARTITION BY F.oprty_key_nbr, Historical_Phases ) AS DATE)
               , 1) 
  ELSE 0
END AS Age_In_Phase