Sql 在多列Oracle 11g表中合并一个字段中的值

Sql 在多列Oracle 11g表中合并一个字段中的值,sql,oracle11gr2,Sql,Oracle11gr2,组合多列表中一个字段的值 T1在几列中有重复的值,然后在最后一列中有非唯一的值。需要返回前6列中的唯一值,然后在最后一列中组合非唯一值。Col1是焦点,因此累积来自col7中的各种值。中间的列并不重要,它们可以是唯一的,也可以是非唯一的。它们确实需要显示在返回的值中 该示例被高度简化为实际问题,但当前的问题是返回col1,以及介于两者之间的所有内容,然后连接从col7中累积的值 CREATE TABLE T1 ( COL1 NUMBER, COL2 NUMBER,

组合多列表中一个字段的值

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
我认为它需要两个带有连接的自连接,但不知道如何创建脚本

感谢所有建议和见解。

首先,如果表中有重复的值,则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;

Listag函数可以帮助您。谢谢您的回复。从SELECT UNIQUE col7中选择col1,LISTAGGcol7,,,,在GROUP ORDER BY col1中选择col1作为名称,从t1 GROUP BY col1中选择col1我无法获得显示以格式化代码,但它确实有效,并提供了我所需的几乎所有内容。我仍然无法开始工作的是添加1到7之间的列I。Listag为col 1和col7提供了所需的结果,但无论我在何处尝试添加其他列,都会得到一个错误..无论我将其他列放置在脚本中的何处,都会得到无效的标识符。。也许我们现在有另一个子查询?谢谢!!对不起。。在完成所有其他操作后,我添加了非唯一值,没有返回并更改文本。你的回答很准确,给了我想要的东西。。非常感谢。