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é)習參考。
 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)換為縱向字段的過程,如果您有更好的方法,歡迎您與我們分享,非常感謝您的支持!
【編輯推薦】
責任編輯:趙鵬 
                    來源:
                    博客園
 














 
 
 




 
 
 
 