合并多列表中一个字段的值。
T1在多个列中具有重复值,然后在最后一列中具有非唯一值。需要返回前6列中的唯一值,然后合并最后一列中的非唯一值。 Col1是焦点,因此积累来自col7中的各种值。中间的列并不重要,它们可以是唯一的也可以是非唯一的。它们确实需要显示在返回的值中。
样本高度简化为真正的问题,但手头的问题是返回col1,介于两者之间,然后连接从col7累积的值
CREATE TABLE T1
(
COL1 NUMBER,
COL2 NUMBER,
COL3 NUMBER,
COL4 NUMBER,
COL5 NUMBER,
COL6 NUMBER,
COL7 NUMBER);--
INSERT INTO T1 VALUES( 1, 2, 3, 4, 5, 6, 7);
INSERT INTO T1 VALUES( 1, 2, 3, 4, 5, 6, 97);
INSERT INTO T1 VALUES( 1, 2, 3, 4, 5, 6, 147);
Desired results
COL1, COL2, COL3, COL4, COL5, COL6, COL7
1 2 3 1 2 3 7, 97,147
我认为它需要两个连接的自连接,但不知道如何创建脚本。
任何和所有建议和见解都表示赞赏。
答案 0 :(得分:1)
首先,col1
如果表中有重复值,则不是主键。您需要检查术语的使用。
您可以通过聚合执行此操作:
select col1, col2, col3, col4, col5, col6,
listagg(col7, ',') within group (order by col7) as col7s
from t1
group by col1, col2, col3, col4, col5, col6;