合并多列 Oracle 11g 中一个字段的值 table

Combine values from one field in multi-columned Oracle 11g table

合并多列中一个字段的值 table。

T1 在几列中有重复值,然后在最后一列中有非唯一值。需要 return 前 6 列中的唯一值,然后在最后一列中组合非唯一值。 Col1 是焦点,因此累加来自 col7 中的各种值。中间的列并不重要,它们可以是唯一的或非唯一的。它们确实需要出现在 returned 值中。

示例已高度简化为实际问题,但手头的事情是 return 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

我认为这需要两个自联接并串联,但不知道如何创建脚本。

感谢任何和所有建议和见解。

首先,如果 col1 在 table 中有重复值,则它不是主键。您需要检查您对术语的使用。

您可以通过聚合来做到这一点:

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;