【发布时间】:2023-01-12 22:24:20
【问题描述】:
我需要帮助才能转动桌子 A
| DATES | Start_DATE | END_DATE | NAME |
|---|---|---|---|
| 1.1.20 | 1.1.20 | 3.1.20 | Name1 |
| 2.1.20 | |||
| 3.1.20 | |||
| 4.1.20 | |||
| 5.1.20 | 5.1.20 | 5.1.20 | Name2 |
| 6.1.20 |
使用 SQL 写入表 B。
| DATES | NAME |
|---|---|
| 1.1.20 | Name1 |
| 2.1.20 | Name1 |
| 3.1.20 | Name1 |
| 4.1.20 | |
| 5.1.20 | Name2 |
| 6.1.20 |
所以我想在“NAME”的“START_DATE”和“END_DATE”范围内的所有“DATES”旁边添加“NAME”
我完全迷路了,非常感谢您的帮助!
谢谢
我尝试按 START_DATE 或按 NAME 或按 END_DATE 对数据进行分组,例如。
count(END_Date) over (ORDER BY DATE) AS grp
而不是使用
first_value(NAME) over (partition by grp order by DATE)
填补空白。不工作
【问题讨论】:
-
为什么你的预期结果是 4.1.20?为什么要将 Name 列留空?为什么要多出一个5.1.20?您可以使用递归 CTE 生成每日列表,但我们需要了解预期结果才能为您提供示例脚本。 (您也可以使用“日历”/“日期”表)。
-
感谢你的回复。我编辑了帖子。我希望现在更容易理解我的问题,初始情况是什么以及我想要实现什么。
-
表 A 是否有完整的日期运行(没有遗漏日期)?另外,不同记录的开始和结束日期范围之间是否有重叠?
-
谢谢你的问题。是的,表 A 没有遗漏日期。但是有一些重叠。日期代表假期。一个假期的日期范围内可能会出现另一个假期。
标签: sql snowflake-cloud-data-platform