mssql 數(shù)據(jù)庫表行轉(zhuǎn)列,列轉(zhuǎn)行終極方案
更新時(shí)間:2010年04月12日 01:44:49 作者:
mssql 數(shù)據(jù)庫表行轉(zhuǎn)列,列轉(zhuǎn)行終極方案,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
--行轉(zhuǎn)列問題
--建立測試環(huán)境
Create Table TEST
(DATES Varchar(6),
EMPNO Varchar(5),
STYPE Varchar(1),
AMOUNT Int)
--插入數(shù)據(jù)
Insert TEST Select '200605', '02436', 'A', 5
Union All Select '200605', '02436', 'B', 3
Union All Select '200605', '02436', 'C', 3
Union All Select '200605', '02436', 'D', 2
Union All Select '200605', '02436', 'E', 9
Union All Select '200605', '02436', 'F', 7
Union All Select '200605', '02436', 'G', 6
Union All Select '200605', '02438', 'A', 7
Union All Select '200605', '02438', 'B', 8
Union All Select '200605', '02438', 'C', 0
Union All Select '200605', '02438', 'D', 3
Union All Select '200605', '02438', 'E', 4
Union All Select '200605', '02438', 'F', 5
Union All Select '200605', '02438', 'G', 1
GO
--測試
--如果STYPE固定,可以這麼寫
Select
DATES,
EMPNO,
SUM(Case STYPE When 'A' Then AMOUNT Else 0 End) As A,
SUM(Case STYPE When 'B' Then AMOUNT Else 0 End) As B,
SUM(Case STYPE When 'C' Then AMOUNT Else 0 End) As C,
SUM(Case STYPE When 'D' Then AMOUNT Else 0 End) As D,
SUM(Case STYPE When 'E' Then AMOUNT Else 0 End) As E,
SUM(Case STYPE When 'F' Then AMOUNT Else 0 End) As F,
SUM(Case STYPE When 'G' Then AMOUNT Else 0 End) As G
From TEST
Group By DATES,EMPNO
Order By DATES,EMPNO
--如果STYPE不固定,用動態(tài)語句
Declare @S Varchar(1000)
Set @S=''
Select @S=@S+',SUM(Case STYPE When '''+STYPE+''' Then AMOUNT Else 0 End) As '+STYPE From (Select Distinct STYPE From TEST) A Order By STYPE
Set @S='Select DATES,EMPNO'+@S+' From TEST Group By DATES,EMPNO Order By DATES,EMPNO'
EXEC(@S)
GO
--如果被轉(zhuǎn)置的是數(shù)字類型的話,應(yīng)用下列語句
DECLARE @S VARCHAR(1000)
SET @S='SELECT DATES,EMPNO '
SELECT @S=@S+',['+STYPE+']=SUM(CASE WHEN STYPE='''+STYPE+''' THEN AMOUNT ELSE 0 END)'
FROM (Select Distinct STYPE From TEST) A Order By STYPE
SET @S=@S+' FROM TEST GROUP BY DATES,EMPNO'
EXEC(@S)
如果是列轉(zhuǎn)行的話直接Union All就可以了
例如 :
city style color 46 48 50 52
長沙 S6MF01002 152 1 2 2 1
長沙 S6MF01002 201 1 2 2 1
上面到下面的樣子
city style color size qty
長沙 S6MF01002 152 46 1
長沙 S6MF01002 152 48 2
長沙 S6MF01002 152 50 2
長沙 S6MF01002 152 52 1
長沙 S6MF01002 201 46 1
長沙 S6MF01002 201 48 2
長沙 S6MF01002 201 50 2
長沙 S6MF01002 201 52 1
Select City,Style,Color,[46] From Test
Union all
Select City,Style,Color,[48] From Test
Union all
Select City,Style,Color,[50] From Test
Union all
Select City,Style,Color,[52] From Test
就可以了
相關(guān)文章
SqlServer將數(shù)據(jù)庫中的表復(fù)制到另一個(gè)數(shù)據(jù)庫
在使用SqlServer的過程中,我們可能需要將表從一個(gè)數(shù)據(jù)庫復(fù)制到另一個(gè)數(shù)據(jù)庫中,今天小編為大家介紹這種操作的具體方法及步驟2021-04-04SQL Server 2017 Developer的下載、安裝、配置及SSMS的下載安裝配置(圖文教程詳解)
這篇文章主要介紹了SQL Server 2017 Developer的下載、安裝、配置及SSMS的下載安裝配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02MSSQL存儲過程學(xué)習(xí)筆記一 關(guān)于存儲過程
在寫筆記之前,首先需要整理好這些概念性的東西,否則的話,就會在概念上產(chǎn)生陌生或者是混淆的感覺。2011-05-05SQL Server 復(fù)制需要有實(shí)際的服務(wù)器名稱才能連接到服務(wù)器
今天在做sql Server 2005的實(shí)驗(yàn)的時(shí)候碰到的問題,問題描述很清楚,懷疑是我以前給計(jì)算機(jī)修改了名稱而導(dǎo)致的.可以用select @@servername和select serverproperty ('servername')對照一下,兩個(gè)的結(jié)果是否一樣2012-06-06sqlserver 動態(tài)創(chuàng)建臨時(shí)表的語句分享
開發(fā)業(yè)務(wù)需求,需要對一個(gè)表作數(shù)據(jù)分析,由于數(shù)據(jù)量較大,而且分析時(shí)字段會隨條件相應(yīng)變化而變化2012-01-01SQL?Server創(chuàng)建用戶定義函數(shù)
這篇文章介紹了SQL?Server創(chuàng)建用戶定義函數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05