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)
执行结果:
以上就是横向数据转换为纵向字段的过程,如果您有更好的方法,欢迎您与我们分享,非常感谢您的支持!
【编辑推荐】