合并多列 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;
合并多列中一个字段的值 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;