发布时间:2011-07-11 10:42 来源:未知
SQL数据库中如何将横向数据转换为纵向字段呢?其实方法很简单,我们通过虚拟表和动态转向就可以实现。本文就介绍了这一转换的过程,我们假设有两个表:表1和表2,如下图所示:
表1:
表2:
Sql语句如下:
//Join一下,把数据插入虚拟表#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)
//动态转向
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)
执行结果:
以上就是横向数据转换为纵向字段的过程,假如您有更好的方法,欢迎您与我们分享,非常感谢您的支持!