【问题标题】:How to create a date loop in SQL如何在 SQL 中创建日期循环
【发布时间】:2015-12-01 14:53:27
【问题描述】:

以下是我的声明:

SELECT [Opp ID], max([Record ID]) as [Record ID]
FROM Opp History Table
WHERE [Last Modified Date] < '2015-01-06' 
GROUP BY [Opp ID] 

我正在尝试构建一个表格来检索显示每周预测如何变化的数据。

我需要从 '2015-01-05' 开始的每周最近的 opp 记录。我将如何编写执行上述语句但增量为 7 天( [Last Modified Date] + 7 days )的脚本。

另外,我是否可以创建一个字段,例如“快照日期”,用感兴趣的日期标记每个 opp?

谢谢。任何帮助表示赞赏!

【问题讨论】:

  • 请张贴表格结构,以便我们查看数据的来源。另外,请发布示例预期结果集
  • Google 并了解 SQL 中的 DATEADD() 函数。

标签: sql sql-server sales-analytics


【解决方案1】:

我会考虑创建一个日期维度表,例如 this,它可以让您在日期上进行连接以获取更多与日期相关的信息 - 如果需要。

否则,只需将 DatePart 包含在您的日期列中,并将其包含在您的 GROUP BY 中。无论哪种方式,您都不需要循环。

SELECT [Opp ID], max([Record ID]) as [Record ID], DatePart(WEEK, [Last Modified Date])
FROM Opp History Table
WHERE [Last Modified Date] < '2015-01-06' 
GROUP BY [Opp ID], DatePart(WEEK, [Last Modified Date])

【讨论】:

  • 我将记录 ID 上的这个表与 Opp 历史表的其余部分连接起来,以检索与 opp 相关的信息。但是,我当前的查询仅检索 2015 年 1 月 5 日“快照日期”的最新修改 opps。我相信我仍然需要一个循环来检索 1/12/15、1/19/15 等最近修改的 opps...
猜你喜欢
  • 1970-01-01
  • 2020-11-20
  • 2023-01-30
  • 2017-08-23
  • 2020-07-23
  • 1970-01-01
  • 2021-11-27
  • 2022-12-08
  • 2020-09-16
相关资源
最近更新 更多