【发布时间】:2021-08-29 10:36:54
【问题描述】:
我正在尝试创建一个表格,其中的列包含当前日期、上一年日期和总收入的附加列,如下所示:
当前日期 | py_date | py_rev
我正在尝试比较多年来任何一天的收入。假设所有日期和收入值都包含在同一个 SQL Server 表中。
我尝试使用以[date] = DATEADD(wk,-52,[date]) 为条件的case 语句来返回适当的总数。整行代码如下:
select
[date] as cur_date,
DATEADD(wk,-52,[date]) py_date,
SUM(case when [date] = DATEADD(wk,-52,[date]) then sum_rev else 0 end) as py_rev
from summary
group by [date]
运行此代码时,py_date 符合预期,但 py_rev 返回 0,就好像没有匹配项一样。最令人困惑的是,如果我硬编码一个随机日期来代替 DATEADD 部分,那么就会返回一个总数。我也尝试过CAST 将日期和DATEADD 部分格式化为日期,但没有成功。
DATEADD 是否有某些内容与我缺少的其他日期列不匹配?
【问题讨论】:
-
请张贴一小部分数据。
-
当然
date不能等于date减去 52 周。所以你最终会求和零。要获得有关您实际想做的edit 问题的帮助并提供minimal reproducible example,即所涉及的表或其他对象的CREATE语句(粘贴文本,不要使用图像,不要链接到外部站点),INSERT用于示例数据的语句(dito)以及表格文本格式的示例数据的期望结果。 -
同时标记您正在使用的 DBMS。
-
表中必须有日期/时间字段才能应用过滤器。编辑问题以显示实际数据。
-
示例数据作为链接附加
标签: sql sql-server tsql dateadd