我有一个包含 10 列的表格。看起来像这样
NULL 1 1 NULL NULL NULL NULL NULL 2 NULL
1 NULL NULL 2 NULL 1 NULL NULL 2 NULL
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL NULL NULL 2 NULL
我需要一个返回以下内容的 SQL 查询:(按行不同)
1 2
1 2
NULL
2
最佳答案
您可以使用层次结构查询
,如下所示:
SELECT LISTAGG(E, ' ') WITHIN GROUP( ORDER BY E )
FROM
( SELECT DISTINCT
ROWID AS RID,
DECODE(COLUMN_VALUE, 1, COL1, 2, COL2, 3, COL3, 4, COL4 ..., 10, COL10) AS E
FROM YOUR_TABLE
CROSS JOIN TABLE ( CAST(MULTISET(
SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL <= 10 ) AS SYS.ODCINUMBERLIST) )
)
GROUP BY RID;
关于sql - PL/SQL 查找并让行重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61231126/