文章詳情頁
SQL Server使用PIVOT與unPIVOT實現(xiàn)行列轉(zhuǎn)換
瀏覽:126日期:2023-03-06 14:25:24
一、sql行轉(zhuǎn)列:PIVOT
1、基本語法:
create table #table1 ( id int ,code varchar(10) , name varchar(20) );goinsert into #table1 ( id,code, name ) values ( 1, "m1","a" ), ( 2, "m2",null ), ( 3, "m3", "c" ), ( 4, "m2","d" ), ( 5, "m1","c" );goselect * from #table1;--方法一(推薦)select PVT.code, PVT.a, PVT.b, PVT.c from #table1 pivot(count(id) for name in(a, b, c)) as PVT;--方法二with P as (select * from #table1)select PVT.code, PVT.a, PVT.b, PVT.c from Ppivot(count(id) for name in(a, b, c)) as PVT;drop table #table1;
結(jié)果:
2、實例:
3、傳統(tǒng)方式:(先匯總拼接出所需列的字符串,再動態(tài)執(zhí)行轉(zhuǎn)列)
先查詢出要轉(zhuǎn)為列的行數(shù)據(jù),再拼接字符串。
create table #table1 ( id int ,code varchar(10) , name varchar(20) );goinsert into #table1 ( id,code, name ) values ( 1, "m1","a" ), ( 2, "m2",null ), ( 3, "m3", "c" ), ( 4, "m2","d" ), ( 5, "m1","c" );goselect * from #table1;declare @strCN nvarchar(100);select @strCN = isnull(@strCN + ",", "") + quotename(name) from #table1 group by name ;print @strCN --‘[a],[c],[d]"declare @SqlStr nvarchar(1000);set @SqlStr = N"select * from #table1 pivot ( count(ID) for name in (" + @strCN + N") ) as PVT";exec ( @SqlStr );drop table #table1;
結(jié)果:
二、sql列轉(zhuǎn)行:unPIVOT:
基本語法:
create table #table1 (id int,code varchar(10),name1 varchar(20),name2 varchar(20),name3 varchar(20));goinsert into #table1(id, name1, name2, code, name3)values(1, "m1", "a1", "a2", "a3"), (2, "m2", "b1", "b2", "b3"), (4, "m1", "c1", "c2", "c3");goselect * from #table1;--方法一select PVT.id, PVT.code, PVT.name, PVT.val from #table1 unpivot(val for name in(name1, name2, name3)) as PVT;--方法二with P as (select * from #table1)select PVT.id, PVT.code, PVT.name, PVT.val from P unpivot(val for name in(name1, name2, name3)) as PVT;drop table #table1;
結(jié)果:
實例:
到此這篇關(guān)于SQL Server使用PIVOT與unPIVOT實現(xiàn)行列轉(zhuǎn)換的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持。
標(biāo)簽:
MsSQL
相關(guān)文章:
1. sql server的幾個函數(shù)要記錄2. 如何將SQL Server表駐留內(nèi)存和檢測3. Sql server 2005帶來的分頁便利4. SQL Server自動備份無法刪除過期的備份文件5. SQL Script tips for MS SQL Server6. SQL Server使用CROSS APPLY與OUTER APPLY實現(xiàn)連接查詢7. Sql server優(yōu)化50法8. 如何在SQL Server 2005中為安裝程序增加計數(shù)器注冊表項值9. MyEclipse添加SQL Server 2008數(shù)據(jù)庫的方法10. SQL Server的死鎖說明
排行榜
