SQL數(shù)據(jù)庫將橫向數(shù)據(jù)轉(zhuǎn)換為縱向字段
作者:skyxin1314
SQL數(shù)據(jù)庫中如果想要將原有表中的橫向數(shù)據(jù)轉(zhuǎn)換為縱向的字段,我們可以通過三步來完成:首先我們把數(shù)據(jù)插入到虛擬表,然后實現(xiàn)動態(tài)轉(zhuǎn)向,最后再將虛擬表刪除,大功告成。本文介紹了這一實現(xiàn)過程,供讀者學(xué)習(xí)參考。
SQL數(shù)據(jù)庫中如何將橫向數(shù)據(jù)轉(zhuǎn)換為縱向字段呢?其實方法很簡單,我們通過虛擬表和動態(tài)轉(zhuǎn)向就可以實現(xiàn)。本文就介紹了這一轉(zhuǎn)換的過程,我們假設(shè)有兩個表:表1和表2,如下圖所示:
表1:
表2:
Sql語句如下:
//Join一下,把數(shù)據(jù)插入虛擬表#T
- SELECT i.SN,i.ItemName,t.Sort,t.t
- INTO #T
- FROM ItemInfo i INNER JOIN
- ItemType t ON i.SN=t.FKSN
- DECLARE @sql nvarchar(1000)
//動態(tài)轉(zhuǎn)向
- SET @Sql = 'SELECT ItemName '
- SELECT @Sql = @Sql + ',ISNULL(SUM(CASE Sort WHEN '''+Sort+''' THEN t END),0) ['+Sort+']'
- FROM (SELECT DISTINCT Sort FROM #T) AS A
- SELECT @Sql = @Sql+' FROM [#T] GROUP BY itemName '
//刪除虛擬表
- SET @Sql=@Sql+' DROP TABLE #T '
- EXEC(@sql)
執(zhí)行結(jié)果:
以上就是橫向數(shù)據(jù)轉(zhuǎn)換為縱向字段的過程,如果您有更好的方法,歡迎您與我們分享,非常感謝您的支持!
【編輯推薦】
責(zé)任編輯:趙鵬
來源:
博客園