查询提供像这样的输出
ID TYPE CN VAL
-----------------------------
1 D CH A
1 K null null
1 K null null
1 K null null
1 D CH A
1 K null null
1 D CH B
1 K null null
2 D CH A
2 K null null
3 D CH C
3 K null null
3 K null null
3 K null null
3 K null null
3 K null null
3 K null null
我想扩展这个看起来像
ID TYPE CN VAL enum
-----------------------------
1 D CH A 1
1 K null null 1
1 K null null 1
1 K null null 1
1 D CH A 2
1 K null null 2
1 D CH B 3
1 K null null 3
2 D CH A 4
2 K null null 4
3 D CH C 5
3 K null null 5
3 K null null 5
3 K null null 5
3 K null null 5
3 K null null 5
3 K null null 5
怎么办呢?滞后/超前?
答案 0 :(得分:0)
要扩展我的评论,这应该会让您和使用最后一个值的想法。 (不知道你实际上是如何订购的,所以我按照rownum订购,你可能应该更改为你订购的任何东西)你也可能想要在val和lv之间添加某种case语句或解码,使它看起来像你的结果集。无论如何mytable代表你的桌子。
WITH mytable AS (SELECT 1 id,
'D' TYPE,
'CH A' CN,
1 val
FROM DUAL
UNION ALL
SELECT 1,
'K',
NULL,
NULL
FROM DUAL
UNION ALL
SELECT 1,
'K',
NULL,
NULL
FROM DUAL
UNION ALL
SELECT 1,
'K',
NULL,
NULL
FROM DUAL
UNION ALL
SELECT 1,
'D',
'CH A',
2
FROM DUAL
UNION ALL
SELECT 1,
'K',
NULL,
NULL
FROM DUAL
UNION ALL
SELECT 1,
'D',
'CH B',
3
FROM DUAL
UNION ALL
SELECT 1,
'K',
NULL,
NULL
FROM DUAL)
SELECT mytable.*,
LAST_VALUE (val IGNORE NULLS) OVER (ORDER BY ROWNUM) AS lv
FROM mytable