【发布时间】:2019-08-23 13:11:22
【问题描述】:
现在我在 sql 代码中遇到了一个小问题。
我不知道这个逻辑。
with res as (
select
85,
2,
45,
34,
60,
2,
6,
4,
78,
6,
23,
45,
80,
80
from dual
)
select * from res
我提到了 3 个标题 .1.input 2.Expected 3.Actual。 我的问题是根据输入天数设置一列,我们必须显示 rn 列。如果值是天 > 60,我们必须显示为零,下一行值将从 1 开始并打印为 2、3、4... 直到天 > 60。然后我们必须将天 > 60 设置为 0和 agin 从 1, 2,3 ... 仍然天 > 60 开始。它的循环直到值结束。
Input Expected Actual
DAYS DAYS RN DAYS RN
85 85 0 85 1
4 4 1 4 2
32 32 2 32 3
7 7 3 7 4
5 5 4 5 5
66 66 0 66 6
14 14 1 14 7
25 25 2 25 8
2 2 3 2 9
9 9 4 9 10
70 70 0 70 11
80 80 0 80 12
6 6 1 6 13
3 3 2 3 14
1 1 3 1 15
78 78 0 78 16
【问题讨论】:
-
您似乎对 RES 子查询中的值进行了排序。但是,行没有自然顺序(即使您以特定顺序编写它们)。你怎么知道“第一个”值是 85,“第二个”是 4,等等?它们是否按另一列排序,可能是“序列”列,或者日期或时间戳列等?