动态SQL解决PIVOT透视多列的问题

有时需要透视的列比较多,或不固定,用动态SQL可以很好地解决问题:

 

CREATE PROCEDURE [dbo].[usp_getErrWeightReportReceiver]
AS

BEGIN
 
    DECLARE @PLANTS VARCHAR(500)=''
	DECLARE @SQL NVARCHAR(1000)

    SELECT @PLANTS = @PLANTS + '[' + VALUE + '],'
    FROM (SELECT DISTINCT VALUE FROM [dbo].[errWeightMail] WHERE ID='FSL_MAILTO' AND VALUE='QQ20') T
    SET @PLANTS= LEFT(@PLANTS, LEN(@PLANTS)-1)
 
    SET @SQL=
    'WITH A AS(
		SELECT ID,VALUE,VALUE PLANT,VALUE3 FROM [dbo].[errWeightMail] WHERE ID=''FSL_MAILTO'' AND VALUE=''QQ20''
	)
	SELECT PLANT,{0} FROM A 
	PIVOT(MIN(VALUE3) FOR VALUE IN({0}))T'
    SET @SQL= REPLACE(@SQL,'{0}',@PLANTS)
    EXEC sp_executesql @SQL
 
END


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值