【发布时间】:2017-09-16 02:35:41
【问题描述】:
我在填写 SQL 中的一些值时遇到了一些麻烦。这是我的数据结构方式的示例。
ID Date Value EndDate
A 1/1/17 500 6/1/17
A 2/1/17 489 6/1/17
A 3/1/17 480 6/1/17
A 4/1/17 475 6/1/17
A 5/1/17 460 6/1/17
A 6/1/17 0 6/1/17
A 7/1/17 0 6/1/17
B 4/1/17 784 8/1/17
B 5/1/17 801 8/1/17
B 6/1/17 0 8/1/17
B 7/1/17 0 8/1/17
B 8/1/17 0 8/1/17
B 9/1/17 0 8/1/17
B 10/1/17 0 8/1/17
C 2/1/17 980 7/1/17
C 3/1/17 564 7/1/17
C 4/1/17 647 7/1/17
C 5/1/17 500 7/1/17
C 6/1/17 0 7/1/17
C 7/1/17 0 7/1/17
C 8/1/17 0 7/1/17
对于每个组,我想将值列填写到 Date 等于 EndDate 的位置。所需的输出看起来像这样
ID Date Value EndDate
A 1/1/17 500 6/1/17
A 2/1/17 489 6/1/17
A 3/1/17 480 6/1/17
A 4/1/17 475 6/1/17
A 5/1/17 460 6/1/17
A 6/1/17 460 6/1/17
A 7/1/17 0 6/1/17
B 4/1/17 784 8/1/17
B 5/1/17 801 8/1/17
B 6/1/17 801 8/1/17
B 7/1/17 801 8/1/17
B 8/1/17 801 8/1/17
B 9/1/17 0 8/1/17
B 10/1/17 0 8/1/17
C 2/1/17 980 7/1/17
C 3/1/17 564 7/1/17
C 4/1/17 647 7/1/17
C 5/1/17 500 7/1/17
C 6/1/17 500 7/1/17
C 7/1/17 500 7/1/17
C 8/1/17 0 7/1/17
有什么建议吗?谢谢!
【问题讨论】:
-
Case when Date<=EndDate then value else 0 end as value -
嗨 xQbert。当结果集按 ID 和日期排序时,我特别需要填写最后一个非零值。这是否考虑了该排序?
-
哦 1 秒。我现在看到我们将先前的值向前推进,但前提是日期