首先让我说我对 SQL/Snowflake 有点陌生,并且已经将查询放在一起大约 2 个月。我的某些查询语言可能并不理想,我完全理解是否有更好、更有效的方式来执行此查询。任何和所有输入表示赞赏。此外,这个特定的查询正在 Snowflake 中开发。
我当前的查询是基于 45 天窗口按部门和日期拉客户量,从当前日期回溯 24 天,根据预定约会向前看 21 天。每个日期都根据它在 45 天窗口内的位置进行分组:本周(今天到接下来的 7 天)、第 1 周(前瞻性第 8-14 天)和第 2 周(前瞻性第 15-21 天)。我一直在努力构建一个比较列,对于第 1 周或第 2 周组内的任何日期,该列将从前 14 天(第 1 周)或前 21 天(第2)但我无处可去。这种类型的列是否有最佳实践?附上当前输出的通用示例。请注意,“前一周”
我尝试了几种不同的 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"*
我非常感谢有关当前最佳实践的任何见解,这些最佳实践是将前期数据拉入当前期间数据旁边的列中。我对术语的任何滥用都不是故意的。