新聞中心
在日常的開發(fā)中,有時候會需要將數(shù)據(jù)行轉(zhuǎn)換為列,從而給出更具有可讀性的結(jié)果集。在SQL Server中,有幾種常用的方法對表中的數(shù)據(jù)行進行轉(zhuǎn)換,將查詢出來的結(jié)果由行轉(zhuǎn)換為列。本文將簡要描述如何將SQL Server數(shù)據(jù)行轉(zhuǎn)換成列,并演示相應(yīng)的代碼。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),龍沙企業(yè)網(wǎng)站建設(shè),龍沙品牌網(wǎng)站建設(shè),網(wǎng)站定制,龍沙網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,龍沙網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
1. 使用CASE條件語句
當行轉(zhuǎn)列的列數(shù)是固定的時候,可以使用CASE語句將每一行的某一列數(shù)據(jù)作為列的列名,將后面的列按行轉(zhuǎn)換成對應(yīng)列的結(jié)果。首先先建立一個預(yù)期結(jié)果的數(shù)據(jù)表:
create table [tb_test]
(
[id] int,
[val1] VARCHAR(50),
[val2] varchar(50),
[val3] varchar(50)
)
GO
insert into [tb_test] values (1, '1', '2', '3')
go
insert into [tb_test] values (2, '4', '5', '6')
go
接著,使用以下SQL語句實現(xiàn)數(shù)據(jù)行轉(zhuǎn)換為列:
SELECT
[id],
MAX(CASE WHEN [val1] IS NOT NULL THEN [val1] END) AS [val1],
MAX(CASE WHEN [val2] IS NOT NULL THEN [val2] END) AS [val2],
MAX(CASE WHEN [val3] IS NOT NULL THEN [val3] END) AS [val3]
FROM [tb_test]
GROUP BY [id]
2. 使用sqlserver的PIVOT關(guān)鍵字
SQLServer支持PIVOT關(guān)鍵字,可以實現(xiàn)一行記錄轉(zhuǎn)成多行同表結(jié)構(gòu)記錄的功能,例如,建立數(shù)據(jù)表:
create table [tb_test2]
(
[id] int,
[val] varchar(50)
)
go
insert into [tb_test2] values (1, 'A')
go
insert into [tb_test2] values (2, 'B')
go
insert into [tb_test2] values (3, 'C')
使用以下SQL語句實現(xiàn)數(shù)據(jù)行轉(zhuǎn)換為列:
SELECT *
FROM [tb_test2]
PIVOT(
MAX([val])
FOR [id] IN ([1], [2], [3])
) AS T
3. 使用SQLServer的UNPIVOT關(guān)鍵字
SQLServer也支持UNPIVOT關(guān)鍵字,可以實現(xiàn)一行記錄轉(zhuǎn)成多行不同表結(jié)構(gòu)記錄的功能,例如,建立數(shù)據(jù)表:
create table [tb_test3]
(
[id] int,
[s1] varchar(10),
[s2] varchar(10),
[s3] varchar(10)
)
go
insert into [tb_test3] values (1, 'a', 'b', 'c')
go
使用以下SQL語句實現(xiàn)數(shù)據(jù)行轉(zhuǎn)換為列:
SELECT [id], [score], [value]
FROM [tb_test3]
UNPIVOT
(
[value]
FOR [score] IN ([s1], [s2], [s3])
) AS p
以上只是SQL Server中用于行轉(zhuǎn)列的一些示例代碼,并不能滿足所有使用場景,開發(fā)者可以根據(jù)項目實際需要,運用上述行轉(zhuǎn)列的基本技巧,設(shè)計出更加靈活的行轉(zhuǎn)列的相關(guān)代碼。
成都網(wǎng)站設(shè)計制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計,成都網(wǎng)站設(shè)計服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
當前文章:如何將SQL Server數(shù)據(jù)行轉(zhuǎn)換為列(sqlserver行變列)
本文路徑:http://m.fisionsoft.com.cn/article/dhipdso.html


咨詢
建站咨詢
