如何根据SQL中表中当前年份的最近日期来识别上一年的相同日期和上个月日期?

问题描述 投票:0回答:1

我正在尝试总结 Amazon Redshift 上按新字段分组的 Name 和 id 的总体利润和交易结果。数据示例如下: 表格数据示例 执行后,我想根据以黄色突出显示的三个字段显示每个人的数据。

  1. 第一个字段应显示用户最近日期的结果 表中
  2. 第二个字段应显示上个月的结果 前一年
  3. 第三个字段应该有利润总和 去年同一日期

其中一位用户的输出

示例代码示例:

*Select Id, Name,
sum (CASE when date = '9/1/2024' then profit) as profit_CYR,
sum (CASE when date = '12/1/2023' then profit) as profit_last_year,
sum (CASE when date = '9/1/2023' then profit) as profit_last_year_to_date
from table*

我只是不想使用硬编码的日期。

sql mysql amazon-redshift
1个回答
0
投票

嗨,我认为您可以使用日期函数根据当前日期确定这些值。

SELECT 
id, name,
SUM(CASE WHEN date = (SELECT MAX(date) FROM table WHERE date <= current_date) THEN profit ELSE 0 END) AS profit_CYR,
SUM(CASE WHEN date = date_trunc('month', current_date - interval '1 year') THEN profit ELSE 0 END) AS profit_last_year,
SUM(CASE WHEN date = current_date - interval '1 year' THEN profit ELSE 0 END) AS profit_last_year_to_date 
FROM table GROUP BY  id,name;
© www.soinside.com 2019 - 2024. All rights reserved.