首頁  >  文章  >  資料庫  >  oracle 行怎麼轉列

oracle 行怎麼轉列

PHPz
PHPz原創
2023-04-18 09:06:5422186瀏覽

在Oracle資料庫中,行轉列是一個常見的資料處理需求。它將行中的多個值轉換為一列中的多個值,從而更好地展示和分析資料。

例如,假設我們有以下表格:

ID Name Score1 # Score2 Score3
1 John 80 70 90
2 Lily #90 #85 #95
3 Tom 60 75 80
##如果我們想要將每個學生的成績轉換為單獨的行,我們可以使用行轉列來實現以下結果:

IDNameSubjectScore#111#22
##John Score1 80
John #Score2 70
John Score3 90
Lily Score1 90
Lily Score2 85
#2 Lily Score3 95
3 #Tom Score1 60
3 #Tom Score2 75
3 Tom Score3 80

在Oracle中,有幾種方法可以實作行轉列,包括使用UNPIVOT和UNION ALL。接下來,我們將詳細介紹每種方法的步驟和語法。

使用UNPIVOT實作行轉列

UNPIVOT是Oracle SQL中的一個關鍵字,可以將列移到行中。使用UNPIVOT查詢可以將多列轉換為多行。使用UNPIVOT首先需要確保表中的每一行都有相同的列數和相同的資料類型。

以下是使用UNPIVOT實作行轉列的步驟:

步驟1:建立範例表格

首先,我們需要建立範例表格以準備好資料。

CREATE TABLE score (
   ID INT,
   Name VARCHAR2(20),
   Score1 INT,
   Score2 INT,
   Score3 INT
);

INSERT INTO score VALUES (1, 'John', 80, 70, 90);
INSERT INTO score VALUES (2, 'Lily', 90, 85, 95);
INSERT INTO score VALUES (3, 'Tom', 60, 75, 80);
COMMIT;

步驟2:執行UNPIVOT查詢

#然後,我們可以使用以下UNPIVOT查詢轉換資料:

SELECT ID, Name, Subject, Score
FROM score
UNPIVOT (
   Score FOR Subject IN (Score1, Score2, Score3)
);

執行結果如下:

1##JohnScore180#1JohnScore2701JohnScore390LilyLilyLily60
#ID Name Subject Score
1
##2
Score1 90 #2
Score2 85 2
#Score3 #95
## 3 Tom Score1

#3

##Tom

Score2

75

3

Tom

#Score3

80

DROP TABLE score;
步驟1:建立範例表格#首先,我們需要建立一個範例表格來準備好資料。
CREATE TABLE score (
   ID INT,
   Name VARCHAR2(20),
   Score1 INT,
   Score2 INT,
   Score3 INT
);

INSERT INTO score VALUES (1, 'John', 80, 70, 90);
INSERT INTO score VALUES (2, 'Lily', 90, 85, 95);
INSERT INTO score VALUES (3, 'Tom', 60, 75, 80);
COMMIT;
SELECT ID, Name, 'Score1' Subject, Score1 Score FROM score
UNION ALL
SELECT ID, Name, 'Score2' Subject, Score2 Score FROM score
UNION ALL
SELECT ID, Name, 'Score3' Subject, Score3 Score FROM score
ORDER BY ID, Subject;
IDNameSubject#ScoreJohnJohnJohnScore1
步驟3:清除表格 最後,我們可以透過刪除表格來清除資料: 使用UNION ALL實作行轉列 UNION ALL也是Oracle SQL中用來行轉列的一種方法。使用UNION ALL查詢可以將列轉換為行。以下是使用UNION ALL實作行轉列的步驟:
步驟2:執行UNION ALL查詢 然後,我們可以使用以下UNION ALL查詢轉換資料: 運行結果如下:
##1
Score1 80 #1
#Score2 70 1
#Score3 90
# 2 Lily
90

#2

Lily

Score2# #####85############2######Lily#######Score3######95########## ##3######Tom######Score1######60#############3#####Tom################################################## Score2######75############3######Tom######Score3#####80######## #######步驟3:清除表格######最後,我們可以透過刪除表格來清除資料:###
DROP TABLE score;
###總結######行轉列是一個常見的數據處理技術,可以讓我們更好地展示和分析數據。在Oracle SQL中,我們可以使用UNPIVOT和UNION ALL來實作行轉列。透過掌握這些概念和相關語法,我們可以輕鬆地處理和分析資料庫中的資料。 ###

以上是oracle 行怎麼轉列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn