【发布时间】:2020-01-24 20:19:42
【问题描述】:
我正在使用 SQL Server,我有一个包含 3 列(时间序列)data 的表,日期以 hour 开头,AwardStatus。
大部分奖励状态是随机生成的。可以有两种选择,Awarded 或 Not Awarded。
但是,业务要求是,如果状态为 NotAwarded,我们必须连续打印 3 行“NotAwarded”,如果状态为 Awarded,则必须连续打印 4 行。
目标:新列ShouldBe 详细信息。
一旦满足最低要求,它就会检查当前行的AwardStatus 并继续覆盖逻辑。
问题:在没有任何类型的游标/循环的情况下,这在 SQL 中是否可行?
以下图为例。
这是一个例子:
AwardStatusMinimum 3
AwardStatusMaximum 4
Date Hour AwardStatus ShouldBe
--------------------------------------
1/1/2019 1 NotAwarded NotAwarded
1/1/2019 2 NotAwarded NotAwarded
1/1/2019 3 Awarded NotAwarded
1/1/2019 4 Awarded Awarded
1/1/2019 5 NotAwarded Awarded
1/1/2019 6 NotAwarded Awarded
1/1/2019 7 Awarded Awarded
1/1/2019 8 NotAwarded NotAwarded
1/1/2019 9 Awarded NotAwarded
1/1/2019 10 Awarded NotAwarded
【问题讨论】:
-
嗨,欢迎来到 SO。没有图片链接,请键入数据示例和架构供我们帮助。见stackoverflow.com/help/how-to-ask
-
对不起!新来的,刚刚添加了代码文本!!
-
我认为这可以解决您的问题stackoverflow.com/questions/21784189/…
-
我们期待这样的事情:sqlfiddle.com/#!18/2a02b/1
-
已添加到原始帖子中,感谢 horaciux,将确保这就是我今后提出问题的方式。
标签: sql sql-server