日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何將SQL Server數(shù)據(jù)行轉(zhuǎn)換為列(sqlserver行變列)

在日常的開發(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è)競爭力。可充分滿足這一群體相比中小企業(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行變列)
標題URL:http://www.5511xx.com/article/dhipdso.html