微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决需要包含两周前数据的列进行比较

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

我当前的查询是根据 45 天窗口按部门和日期提取客户量,从当前日期开始回溯 24 天,根据预定约会预测 21 天。每个日期都根据它在 45 天窗口内的位置分组:本周(今天到接下来的 7 天)、第 1 周(前瞻性 8-14 天)和第 2 周(前瞻性 15-21 天)。我一直在努力建立一个比较列,对于落在第 1 周或第 2 周组内的任何日期,将从前 14 天(第 1 周)或前 21 天(第2)但我一无所获。这种类型的色谱柱是否有最佳实践?附上当前输出的通用示例。请注意,示例输出中的“Prior Wk”列是手动填充的,目的是为了说明该列的理想工作方式。

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

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

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

(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"

还尝试创建和使用临时表(包括示例),但未能成功从临时表中提取信息,这些信息并未完全中断我的遭遇/计划计数。请注意,对于这种方法,我只关注 14 天组,还没有开始研究 21 天/第 2 周组。我尝试使用临时表解决以以下子句为中心的问题(临时表别名:“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"*

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

Query Output Example

Temp Table Example

解决方法

我很难理解您的要求,但听起来您需要使用窗口函数 https://docs.snowflake.com/en/sql-reference/functions-analytic.html,在本例中可能是 SUM 窗口函数。 LAG 窗口函数 https://docs.snowflake.com/en/sql-reference/functions/lag.html 也可能有所帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。