Oracle Query:转换rownum的范围为(1-7)

时间:2018-03-15 12:13:29

标签: oracle

I have a table as follows:
 Date      Line    Qty     RN
15-03-18    1      10       1
16-03-18    1      10       2
17-03-18    1      10       3
18-03-18    1      10       4
15-03-18    2      10       5
16-03-18    2      10       6
17-03-18    2      10       7

我有一个组合框,有5,6和7选项 如果用户选择5,我希望为rownum 6和7 = 0创建数量 如果用户选择6,我希望为rownum 7 = 0创建数量 如果用户选择7,我希望保持数量(对于每一行) 含义为日期选择数量5天,6天或7天使休息0 但是我的行数是1,2,mabbe高达100。 我需要在7(每周)范围内转换它们,然后相应地进行转换 数量0。

尝试这样的事情: 如果从组合框中选择5:

SELECT date,line,(CASE 
    when rn=6 then 0
    when rn=7 then 0
    else qty
    end) as qty
    from above table

我根据rn(rownum)选择日期,行和更改数量。感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用函数mod()sign(),这种结构给了我所需的值:

select tbl.*, decode(sign(5 - mod(rn - 1, 7)), 1, qty, 0)
  from tbl

<强> demo

代替硬编码5放置参数。