You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server:如何比较重叠日期区间并按最高价输出分段区间

分组内重叠日期区间的最高价分段区间求解

需求说明

在分组内比较多个重叠的日期区间,输出各时段内对应最高价的分段区间。

示例数据

对应的数据如下,已整理为SQL代码:

DROP TABLE IF EXISTS #TestTable;
CREATE TABLE #TestTable (
   ID Varchar(11),
   Place Varchar(50),
   Price Bigint,
   DateStart Date,
   DateEnd Date
);

INSERT INTO #TestTable (ID, Place, Price, DateStart, DateEnd)
VALUES (1, 'OnePlace', 100, '2023-01-01', '2023-05-01'), 
       (1, 'AnotherPlace', 150, '2023-02-01', '2023-06-01'), 
       (1, 'YetAnotherPlace', 200, '2023-03-01', '2023-04-01'), 
       (2, 'YetAnotherPlace', 200, '2023-01-01', '2023-04-01'),
       (2, 'OnePlace', 100, '2023-03-01', '2023-06-01');

SELECT * FROM #TestTable; 

期望输出

期望得到按ID分组后,每个分段日期区间对应的最高价格结果:

  • ID=1的分段结果:
    • 2023-01-01 至 2023-02-01:最高价100
    • 2023-02-01 至 2023-03-01:最高价150
    • 2023-03-01 至 2023-04-01:最高价200
    • 2023-04-01 至 2023-05-01:最高价150
    • 2023-05-01 至 2023-06-01:最高价150
  • ID=2的分段结果:
    • 2023-01-01 至 2023-03-01:最高价200
    • 2023-03-01 至 2023-04-01:最高价200
    • 2023-04-01 至 2023-06-01:最高价100

遇到的问题

ID=2的简单重叠场景已找到解决方案,但ID=1的复杂重叠场景(三个区间互相交叉:100的区间覆盖1-5月,150的覆盖2-6月,200的覆盖3-4月)尚未找到合适的解决办法。曾尝试使用合并日期区间的CTE方案,但无法调整该方案以输出符合需求的分段区间。

内容的提问来源于stack exchange,提问作者user6610400

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:02:03