SQL - 将多行记录合并和分组到列

SQL - Consolidate and group records from multiple rows to columns

有没有办法转置多行并将它们分组到列?

我有一个 table,其中包含来自不同 table 和列的发票值的数据。现在,我想通过发票编号获得它们。

InvoiceNumber Table Column Value
123 A Column A1 ABC
123 A Column A2 DEF
123 A Column A3 GHI
123 B Column B1 JKL
123 B Column B2 MNO
234 A Column A1 1BC
234 A Column A2 2EF
234 A Column A3 3HI

现在,我需要按以下方式合并发票编号的详细信息。

InvoiceNumber ColumnA1 ColumnA2 ColumnA3 ColumnB1 ColumnB2
123 ABC DEF GHI JKL MNO
234 1BC 2EF 3HI

非常感谢对此的任何帮助。我用 group by 尝试了几个选项,但其中 none 是有效的。

这是一个使用数据透视表的潜在解决方案。 首先创建一个 table

CREATE TABLE TABLE1 
   (   INVOICENUMBER VARCHAR2(20), 
       TABLE_NAME VARCHAR2(20), 
       COLUMN_VAL VARCHAR2(20), 
       VALUE VARCHAR2(20)
   ) 

让我们插入一些行

REM INSERTING into TABLE1
SET DEFINE OFF;
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('123','A','Column A1','ABC');
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('123','A','Column A2','DEF');
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('123','A','Column A3','GHI');
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('123','B','Column B1','JKL');
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('123','B','Column B2','MNO');
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('234','A','Column A1','1BC');
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('234','A','Column A2','2EF');
Insert into TABLE1 (INVOICENUMBER,TABLE_NAME,COLUMN_VAL,VALUE) values ('234','A','Column A3','3HI');

现在让我们使用数据透视表查询这些结果。

WITH cte_mytable AS (
    SELECT
        invoicenumber,
        column_val,
        value
    FROM
        table1
)
SELECT
    *
FROM
    cte_mytable PIVOT (
        MAX ( value )
        FOR column_val
        IN ( 'Column A1',
        'Column A2',
        'Column A3',
        'Column B1',
        'Column B2' )
    );