需要包含两周前日期的数据的列以进行比较

Need column comprised of data from date two weeks ago for comparison

首先让我说一下,我对 SQL/Snowflake 有点陌生,并且已经整理了大约 2 个月的查询。我的某些查询语言可能并不理想,我完全理解是否有更好、更有效的方式来执行此查询。感谢任何和所有输入。此外,此特定查询正在 Snowflake 中开发。

我当前的查询是根据 45 天 window 按部门和日期拉取客户数量,从当前日期开始回溯 24 天,并根据预定约会进行 21 天展望。每个日期都根据它在 45 天内的位置进行分组 window:本周(今天到接下来的 7 天)、第 1 周(前瞻性第 8-14 天)和第 2 周(前瞻性第 15 天) -21).我一直在努力尝试建立一个比较栏,对于落在第 1 周或第 2 周组内的任何日期,将从 14 天前(第 1 周)或 21 天前(第 1 周)提取前期交易量2)但我无处可去。这种列有最佳实践吗?附上当前输出的通用示例。请注意,示例输出中的 'Prior Wk' 列是手动填充的,目的是说明该列的理想工作方式。

我已经尝试了几种不同的 count(case...) 迭代,类似于下面列出的;但是,'Prior Wk' 列 return 是同一天遇到的 encounters/scheduled 的计数,而不是 14 或 21 天前发生的计数。

Count(Case When datediff(dd,SCHED_DTTM,getdate()) 
      between -21 and -7 then 1 else null end
) as "Prior Wk"

我尝试使用如下所示的 IFF 语句,但没有值 return。

(IFF(ENCOUNTER_DATE > dateadd(dd,8,getdate()),
 count(case when ENC_STATUS in (“Phone”,”InPerson”) AND
 datediff(dd,ENCOUNTER_Date,getdate()) between 7 and 14 then 1 
 else null end), '0')
) as "Prior Wk"

也曾尝试创建和使用临时 table(包括示例)但未能成功从临时 table 中提取信息,这并没有完全破坏我的 encounter/scheduled计数。请注意,对于这种方法,我只关注 14 天组,并没有开始关注 21 day/Week 2 组。我尝试使用 temp table 来解决围绕以下子句的问题(temp table 别名:“Date1”):

CASE when AHS.GL_Number = "DATEVISIT1"."GL_NUMBER" AND 
  datevisit1.lookback14 = dateadd(dd,14,PE.CONTACT_Date)
then "DATEVISIT1"."ENC_Count" 
else null end 
as "Prior Wk"*

我非常感谢任何关于将前期数据与当前时期数据一起拉入一列的当前最佳实践的见解。我对术语的任何滥用都不是故意的。

我很难理解您的要求,但听起来您需要使用 window 函数 https://docs.snowflake.com/en/sql-reference/functions-analytic.html, in this case likely a SUM window function. The LAG window function, https://docs.snowflake.com/en/sql-reference/functions/lag.html,也可能会有一些帮助