我可以在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
答案 0 :(得分:2)
这是一个选项,使用相关子查询来处理plugins: [
new MiniCssExtractPlugin({
filename: './build/myawesomeapp-editor.css'
})
]
列的汇总:
value
这里的逻辑是,对于每个组,通过汇总将给定行中当前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。但是,这将需要更多的代码,并且可能比我上面写的要难消化。