有沒有辦法轉置多行并將它們分組到列?
我有一個表,其中包含來自不同表和列的發票值的資料。現在,我想通過發票編號獲得它們。
| 發票編號 | 桌子 | 柱子 | 價值 |
|---|---|---|---|
| 123 | 一種 | A1欄 | 美國廣播公司 |
| 123 | 一種 | A2欄 | 防御工事 |
| 123 | 一種 | A3欄 | 全球健康指數 |
| 123 | 乙 | B1欄 | JKL |
| 123 | 乙 | B2欄 | 移動網路運營商 |
| 234 | 一種 | A1欄 | 1BC |
| 234 | 一種 | A2欄 | 2EF |
| 234 | 一種 | A3欄 | 3HI |
現在,我需要按以下方式合并發票編號的詳細資訊。
| 發票編號 | A1列 | A2列 | A3列 | B1列 | B2列 |
|---|---|---|---|---|---|
| 123 | 美國廣播公司 | 防御工事 | 全球健康指數 | JKL | 移動網路運營商 |
| 234 | 1BC | 2EF | 3HI |
將不勝感激對此的任何幫助。我嘗試了 group by 的幾個選項,但沒有一個有效。
uj5u.com熱心網友回復:
這是使用樞軸的潛在解決方案。首先創建一個表
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' )
);

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361918.html
上一篇:將日期變數傳遞給sql動態陳述句
