【问题标题】:SQL Query-Multiple date rangesSQL 查询 - 多个日期范围
【发布时间】:2025-12-12 13:30:03
【问题描述】:

我想通过提供多个日期范围从数据库中获取一些数据。例如,在 2 月,我想按以下顺序从表中获取每周报告:2 月 1 日至 07 日、2 月 7 日至 14 日、2 月 14 日至 21 日、2 月 21 日至 28 日和 2 月 28 日至 3 月 1 日。在 DB 中,记录存储在每日明智而不是每周明智。我想每周将其聚类并计算总和然后显示结果。如果你知道这个案例,请帮助我。

要获得清晰的视图,请考虑 3 个表格及其列。

Table A:id,timestamp (comment-data is inserted daily)   
Table B:id,fruits  
Table C:id,fruits_type  

结果:

fruits_type count(id)   timestamp 
apple   3   01-02-2016 to 07-02-2016 
orange  5   01-02-2016 to 07-02-2016 
pineapple   8   01-02-2016 to 07-02-2016 
apple   4   07-02-2016 to 14-02-2016 
orange  5   07-02-2016 to 14-02-2016 

条件:id 应在 3 个表中匹配;通过按 fruits_type 提供分组来获取数据,并且时间戳应按周计算。

如果你知道,请帮忙

【问题讨论】:

  • 请使用相关表格结构、一些示例数据和所需结果编辑您的问题。
  • 您对每周计算的通用解决方案感兴趣还是只针对特定日期感兴趣?
  • 对于清晰的视图,请考虑 3 个表及其列。表 A:id,timestamp (每天插入评论数据) 表 B:id,fruits 表 C:id,fruits_type 结果:fruits_type count(id) timestamp apple 3 01-02-2016 to 07-02-2016 orange 5 01 -02-2016 至 07-02-2016 菠萝 8 01-02-2016 至 07-02-2016 苹果 4 07-02-2016 至 14-02-2016 橙子 5 07-02-2016 至 14-02-2016 条件:id 应该在 3 个表之间匹配;通过按 fruits_type 和时间戳提供分组来获取数据应该是每周一次。如果您知道这一点,请提供帮助。

标签: sql-server dbvisualizer sql-query-store


【解决方案1】:

要获得两个日期之间所有值的总和,您可以这样做:

SELECT SUM(Column1)
FROM Table1
WHERE Date1 BETWEEN '2/1/2016' AND Date1 <'2/7/2016'

如果您想让它更灵活并让查询获得上周的总和,您可以使用 DATEADD 函数延迟一周:

SELECT SUM(Column1)
FROM Table1
WHERE Date1 BETWEEN DATEADD(week, -1, GETDATE()) AND Date1 < GETDATE()

如果您希望结果集包含每周的一行,您可以使用 UNION 来合并查询。

【讨论】: