Oracle SQL-显示最新记录的值

时间:2019-01-14 08:49:29

标签: sql oracle

我可以在Oracle SQL中使用LISTAGG或类似的分析功能来显示分组中的所有值,直到当前记录吗?

这是我的桌子:

id      group_id   value
--      --------   -----
1       1          A
2       1          B
3       1          C
4       2          X
5       2          Y
6       2          Z

我想要以下结果:

id      group_id   values
--      --------   ------
1       1          A
2       1          AB
3       1          ABC
4       2          X
5       2          XY
6       2          XYZ

1 个答案:

答案 0 :(得分:2)

这是一个选项,使用相关子查询来处理plugins: [ new MiniCssExtractPlugin({ filename: './build/myawesomeapp-editor.css' }) ] 列的汇总:

value

Demo

这里的逻辑是,对于每个组,通过汇总将给定行中当前SELECT t1.id, t1.group_id, (SELECT LISTAGG(t2.val, '') WITHIN GROUP (ORDER BY t2.id) FROM yourTable t2 WHERE t1.group_id = t2.group_id AND t2.id <= t1.id) AS vals FROM yourTable t1 ORDER BY t1.id; 值之前或之后的所有值串联在一起。

另一种可能会更好地执行和扩展规模的方法是使用递归CTE。但是,这将需要更多的代码,并且可能比我上面写的要难消化。