日期之间的SQL总和
我需要在范围日期的相交中汇总值。
源
人员 | 项目 | start_date | end_date | 值 |
---|---|---|---|---|
A | 苹果 | 08.03.2018 | 29.03.2018 | 3 |
A | Apple | 01.01.2019 | 08.08.08.2021 | 2 |
A | Apple | 01.01.10.10.2019 | 09.10.2021 | 5 |
A | PEN | | | |
| | 数据 | 20.03.2018 | 8 |
a | cup | 15.03.2018 | 20.03.2019 | 2 |
b | pen | 10.10.2021 | 30.10.2021 | 2 |
b | pen | 10.10.2021 | 30.10.2021 | 6 |
b | orange | 10.11.2021 | 10.11.2022 | 3 |
b | orange | 20.11.2021 | 20.12.2021 | 2 |
expected结果
人员 | 项目 | start_date | end_date | 值 |
---|---|---|---|---|
A | 苹果 | 08.03.2018 | 29.03.2018 | 3 |
A | Apple | 01.01.2019 | 08.08.2021 | 7 |
A | Apple | 09.08.2021 | 09.10.2021 | 5 |
A | PER A PER | 10.10.2021 | 30.10.10.10.10.10.2021 | 2 |
A | CUP | 08.08.08.03.2018 | 14.0.03.2018 14.303.2018 | 8 |
杯 | 10.11.2021 | 15.03.2018 | 20.03.2018 | 10 |
A | 杯 | 21.03.2018 | 20.03.2019 | 2 |
B | Pen | 10.10.2021 | 30.10.2021 | 8 |
B | 橙色 | Orange | 19.11.2021 | 3 |
B | 橙色 | 20.11.11.2021 | 20.12.12.2021 | 5 |
B | 21.12 | 。 2021 | 10.11.2022 | 3 |
我使用这样的代码,但这很简单,结果不好,
select
person
,item
,Min([start_date]) as [start_date]
,Max([end_date]) as [end_date]
,Sum([value]) as [value]
FROM table
Group by person, item
我尝试使用lag()函数,但是我迷路了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我无权访问突触,但是假设它与SQL Server兼容...
内部查询构建数据范围,在需要时为重叠期创建其他日期。主查询仅总和值。
列
BE
包含:I have no access to Synapse , but assuming it's compatibile with SQL server...
db<>fiddle
Internal query build data ranges, creating additional dates for overlapping periods if needed. Main query just sum values.
column
be
contains: