sql中如何實現列轉行
SQL中實現列轉行的操作有兩種方式:使用UNION 操作符通過垂直合併查詢結果實現列轉行。使用PIVOT 函數將列數據轉換為行數據,其中PIVOT 函數的語法為:PIVOT ( aggregate_function(column_name) FOR pivot_column_name IN (value1, value2, ...) ) FROM table_name
SQL 中實現列轉行的操作
列轉行操作,也稱為“解構”或“交叉表”,是指將表中的多列數據轉換為單列行數據。在SQL 中,可以通過UNION 操作符或PIVOT 函數實現此操作。
使用UNION 操作符
UNION 操作符可以將多個查詢結果垂直合併,從而實現列轉行的效果。以下是一個示例:
<code class="sql">SELECT * FROM table_name UNION SELECT * FROM table_name WHERE column_name1 IS NOT NULL UNION SELECT * FROM table_name WHERE column_name2 IS NOT NULL;</code>
使用PIVOT 函數
PIVOT 函數專門用於轉換數據佈局,可以將列數據轉換為行數據。其語法如下:
<code class="sql">PIVOT ( aggregate_function(column_name) FOR pivot_column_name IN (value1, value2, ...) ) FROM table_name;</code>
其中:
-
aggregate_function
: 要應用於轉換列數據的聚合函數,如SUM、COUNT 或MAX。 -
pivot_column_name
: 用作行標頭的列名稱。 -
value1
,value2
, ...: 指定要轉行的列值。
示例
假設我們有一個名為orders
的表,其中包含以下列:
-
order_id
-
product_name
-
quantity
-
sale_date
要將product_name
列轉行,使用PIVOT
函數:
<code class="sql">SELECT order_id, sale_date, SUM(quantity) AS quantity FROM orders PIVOT ( SUM(quantity) FOR product_name IN ('Product A', 'Product B', 'Product C') );</code>
這將產生以下輸出:
order_id | sale_date | quantity_Product A | quantity_Product B | quantity_Product C |
---|---|---|---|---|
1 | 2023-01-01 | 10 | 15 | 20 |
2 | 2023-01-02 | 5 | 10 | 15 |
以上是sql中如何實現列轉行的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Oracle 中的 SUM 用於計算非空數值的總和,而 COUNT 則計入所有資料類型的非空值數量,包括重複值。

SQL SUM 函數透過將一組數字相加來計算它們的總和。其運算過程包括:1. 識別輸入值;2. 循環輸入值並將其轉換為數字;3. 對每個數字進行加法,累積一個總和;4. 傳回總和結果。

SQL 中的聚合函數用於計算並傳回一組行的單一值。常見的聚合函數包括:數值聚合函數:COUNT()、SUM()、AVG()、MIN()、MAX()行集合聚合函數:GROUP_CONCAT()、FIRST()、LAST()統計聚合函數:STDDEV ()、VARIANCE()選用聚合函數:COUNT(DISTINCT)、TOP(N)

Oracle 中 COUNT 函數用於統計指定列或表達式中的非空值,語法為 COUNT(DISTINCT <column_name>) 或 COUNT(*),分別計算唯一值和所有非空值的個數。

SQL中的SUM()函數用來計算數字列的總和。它可以根據指定列、篩選條件、別名、分組和聚合多個列來計算總和,但僅處理數字值,忽略NULL值。

MySQL 的 AVG() 函數用於計算數字值的平均值。它支援多種用法,包括:計算所有銷售產品的平均數量:SELECT AVG(quantity_sold) FROM sales;計算價格的平均值:AVG(price);計算銷售額的平均值:AVG(quantity_sold * price)。 AVG() 函數忽略 NULL 值,使用 IFNULL() 可計算非空值的平均值。

SC 在 SQL 中表示 SELECT COUNT,用於計算記錄數(無論是否符合條件)的聚合函數。 SC 語法:SELECT COUNT(*) AS record_count FROM table_name WHERE condition,其中 COUNT(*) 計算所有記錄的數量,table_name 是表名,condition 是可選條件(用來計算滿足條件的記錄數)。

使用 GROUP BY 和 ORDER BY 可以對分組資料進行排序:1. GROUP BY 分組資料;2. ORDER BY 排序每組資料。
