我正在尝试使用以下示例将行转换为列:
<表类>
级COL_VALUE TABLE_SRC tbody><<tr>16 INT: ADDRESS_LINE_2:空 INT 16 基础:ADDRESS_LINE_2: X 基地 17INT: ADDRESS_LINE_3:空 INT 17基础:ADDRESS_LINE_3: X 基地 表类>
您可以在内部子查询中包含LVL
:
SELECT *
FROM (
SELECT BATCH_ID
,CONTACT_ID
,COL_VALUE
,TABLE_SRC
,LVL
FROM MISMATCH
) PIVOT (
max(COL_VALUE)
FOR TABLE_SRC IN ('1BASE' BASE, '1INT' INT)
)
如果您不希望它出现在输出中,则将SELECT *
更改为列列表。
对于您的样本数据:
CREATE TABLE mismatch (batch_id, contact_id, LVL, COL_VALUE, TABLE_SRC) AS
SELECT 1, 1, 16, 'INT: ADDRESS_LINE_2:NULL', '1INT' FROM DUAL UNION ALL
SELECT 1, 1, 16, 'BASE: ADDRESS_LINE_2:X', '1BASE' FROM DUAL UNION ALL
SELECT 1, 1, 17, 'INT: ADDRESS_LINE_3:NULL', '1INT' FROM DUAL UNION ALL
SELECT 1, 1, 17, 'BASE: ADDRESS_LINE_3:X', '1BASE' FROM DUAL;
输出:
<表类>tbody><<tr> BATCH_ID CONTACT_ID 级基地 INT 1 1 16 基础:ADDRESS_LINE_2: X INT: ADDRESS_LINE_2:空 1表类> 1 17 基础:ADDRESS_LINE_3: X INT: ADDRESS_LINE_3:空