MySQL中的Pivot操作是指將一行中的值轉(zhuǎn)換為列中的值,因此可以將行數(shù)據(jù)進(jìn)行透視,使列數(shù)據(jù)更加美觀和易于分析。下面將介紹如何使用MySQL來(lái)執(zhí)行Pivot操作。
SELECT [query_expression] [FOR {UPDATE | SHARE}] [pivoting_clause]
在上述的SQL語(yǔ)句中,Pivoting_clause是Pivot操作的核心部分,它包含三個(gè)關(guān)鍵字:
- SELECT
- GROUP BY
- PIVOT
下面將詳細(xì)介紹這三個(gè)關(guān)鍵字。
1、SELECT:
SELECT * FROM table_name
在這里,我們可以選擇需要轉(zhuǎn)換到列的行數(shù)據(jù)。例如,我們要將一個(gè)訂單表轉(zhuǎn)換為按日期分組的訂單明細(xì)表,則SELECT語(yǔ)句應(yīng)該包含“日期”和“數(shù)量”,其中日期是分組的依據(jù),數(shù)量是轉(zhuǎn)換到列的值。
2、GROUP BY:
SELECT * FROM table_name GROUP BY column_name
在這里,我們可以通過(guò)分組來(lái)匯總數(shù)據(jù)。例如,我們要將一個(gè)訂單表轉(zhuǎn)換為按日期分組的訂單明細(xì)表,則GROUP BY語(yǔ)句應(yīng)該包含“日期”列。
3、PIVOT:
SELECT * FROM ( SELECT * FROM table_name ) PIVOT ( [aggregation_function(column_name)] FOR column_name2 IN ([value1], [value2], ..., [valuen]) )
在這里,我們可以通過(guò)PIVOT語(yǔ)句將上述兩個(gè)語(yǔ)句組合起來(lái)。例如,我們要將一個(gè)訂單表轉(zhuǎn)換為按日期分組的訂單明細(xì)表,則PIVOT語(yǔ)句應(yīng)該包含“數(shù)量”列,并且將“日期”列轉(zhuǎn)換為列。
最終的SQL語(yǔ)句應(yīng)該如下所示:
SELECT * FROM ( SELECT DATE_COLUMN, QUANTITY_COLUMN FROM TABLE_ORDERS ) PIVOT ( SUM(QUANTITY_COLUMN) FOR DATE_COLUMN IN ('2021-01-01', '2021-01-02', '2021-01-03') );
在這里,我們將訂單表轉(zhuǎn)換為按日期分組的訂單明細(xì)表,并且將每個(gè)日期的數(shù)量總和作為行數(shù)據(jù)來(lái)顯示。這是最基本的Pivot操作。