Sql Server 动态行转列

该文描述了一个使用T-SQL构建动态查询的过程,将TableA和TableB的数据通过Pivot操作转换,将F_ItemName字段的值作为列名,实现了数据从行到列的转换。查询首先定义了需要转换的字段,然后构造SQL语句并执行,用于处理特定数据集的聚合和展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 定义需要行转列的字段
  2. 构造动态的SQL查询语句
DECLARE @cols AS NVARCHAR(MAX), @@sqlStr AS NVARCHAR(MAX)
-- 定义需要作为列的字段 F_ItemName
SELECT @cols = STUFF((SELECT ',' + QUOTENAME(F_ItemName)
     FROM tableA
     FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')

-- 构造动态 SQL 查询语句
SET @sqlStr
    = N'
      SELECT * FROM (
      SELECT DISTINCT top 100 percent 
		    a.F_CustomerName,
		    a.F_CreateDate,
		    a.F_OrderNo,
			b.F_ItemName,
		    b.F_EnterValue
       FROM TableA a INNER JOIN TableB b sample ON a.F_OrderNo= b.F_OrderNo
   ) AS dataInfo PIVOT(MAX(F_EnterValue) FOR F_ItemName IN (' + @cols
 + N') ) AS lastData
    '

-- 执行动态 SQL 查询语句
EXEC  @@sqlStr

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值