【问题标题】:Condition MAX(date_x) = YEAR(current_date) Teradata, SQL条件 MAX(date_x) = YEAR(current_date) Teradata,SQL
【发布时间】:2021-09-23 04:41:49
【问题描述】:

我正在处理一个数据集。我想创建一个声明:

如果一个人有一个 MAX(date_x) = YEAR(current_date) 的观察,那么它将在所有行上返回 TRUE(1),包括去年和前一年的行。

如果一个人没有观察到 MAX(date_x) = YEAR(current_date),则所有行都为 FALSE(0)。

这可能吗?提前非常感谢!

这是输出应如何显示的示例,因为 Mike 和 Ofelia 在 2021 年有行,那么他们的所有行的值都是 1

【问题讨论】:

  • 如果您包含数据/表格的样本,这将更容易回答。但是这是可能的,我会在下面给出答案

标签: sql date teradata


【解决方案1】:

这可以使用子查询来获取每个人的最大日期,然后是一个案例陈述

SELECT
 t1.*
,CASE
     WHEN EXTRACT(YEAR FROM MAX_DATE) = EXTRACT(YEAR FROM CURRENT_DATE)
     THEN 'True'
     ELSE 'False'
     END AS CURRENT_YEAR_FLAG
FROM (SELECT *
      ,MAX(date_x) OVER(PARTITION BY PERSON) AS MAX_DATE
      FROM TABLE) t1

【讨论】:

  • 感谢@TheWitherCode!很抱歉格式不好,我对stackoverflow还是很陌生。这真的很有意义。我将使用类似的东西:CASE WHEN Year(Max(date_x) Over(PARTITION BY PERSON)) = Year(Current_Date) THEN 1 ELSE 0 END AS Current_Year_Flag
猜你喜欢
  • 2020-06-03
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2023-04-10
  • 2018-08-07
  • 2021-09-20
相关资源
最近更新 更多