【发布时间】:2019-07-02 03:34:12
【问题描述】:
我在 SQL Server 中的表结构如下所示。
id startdate enddate value
---------------------------------------
1 2019-02-06 2019-02-07 11
1 2019-01-22 2019-02-05 10
1 2019-01-15 2019-01-21 14
1 2018-12-13 2018-01-14 15
1 2018-12-09 2018-12-12 14
1 2018-08-13 2018-12-08 17
1 2018-07-19 2018-08-12 19
1 2018-06-13 2018-07-18 20
现在我的查询需要显示该月最高开始日期的值。这很好,我知道需要做什么,但不只是开始该月的最高日期值,如果该开始日期没有值,我们会从上个月结转值。所以基本上如果你注意到上面的数据,在 2018 年 12 月的值之后,没有 11 月、10 月、9 月等的值,但我想在结果中返回那个月的 MM/YYYY 值,但这些月的值应该是我们在较早的月份是八月的值,在此示例中为 17。请注意,结束日期将始终为新开始日期开始前的一天。可能这可用于回填和结转缺失的月份值?
所以我的结果应该如下所示。
id date value
----------------------------
1 2019-02 11
1 2019-01 10
1 2018-12 15
1 2018-11 17
1 2018-10 17
1 2018-09 17
1 2018-08 17
1 2018-07 19
1 2018-06 20
你觉得这里不用光标也能做到吗?
【问题讨论】:
-
您使用的是什么版本的 SQL Server?顺便说一句,您在提出问题方面做得很好。
-
错字?
1 2018-12-13 2018-12-10 15时光倒流,直到 1 月中旬才离开。 -
@Brian,我们有 SQLServer 13。
-
@MatBailie,是的。谢谢你发现那个错字。让我现在解决这个问题。再次感谢您。
标签: sql sql-server database tsql