SQL Server 行转列常用案例(最便捷的行转列)

本文通过SQL查询技术,展示了如何从实验步骤中提取并存储升温时间和保温时间,使用游标实现数据动态填充到#YS表中,最后展示和清理临时表的操作。

select top 5  expe.HeatingTime as 升温时间, expe.HoldingTime as 保温时间
        from ExperimentalProcessSteps  as expe
        left join ProductFamily as  pf   on expe.ProductFamilyId = pf.ProductFamilyId
    
    CREATE TABLE #YS--元素
        (  ID INT IDENTITY,
          Item0 NVARCHAR(20),
          Item1 NVARCHAR(20),
          Item2 NVARCHAR(20),
          Item3 NVARCHAR(20),
          Item4 NVARCHAR(20),
          Item5 NVARCHAR(20)

        )
        ---新增四行
        INSERT #YS (Item0)
        SELECT '升温时间'
        INSERT #YS (Item0)
        SELECT '保温时间'

        /* 游标循环给YS值 */
        DECLARE @ItemName1 NVARCHAR(20),@ItemName2 NVARCHAR(20)
        DECLARE @RowNum INT=1,@ItemNum INT=1 --行数,项目数
        DECLARE @Sql NVARCHAR(500)='' --存放修改#YS的sql语句

--查询转换前

        DECLARE cursor_YS CURSOR FAST_FORWARD READ_ONLY FOR 
        select top 5  expe.HeatingTime, expe.HoldingTime
        from ExperimentalProcessSteps  as expe
        left join ProductFamily as  pf   on expe.ProductFamilyId = pf.ProductFamilyId

        OPEN cursor_YS        
        FETCH NEXT FROM cursor_YS 
        INTO @ItemName1,@ItemName2
        WHILE @@FETCH_STATUS = 0
        BEGIN

            SET @Sql=' UPDATE #YS SET Item'+LTRIM(@RowNum)+'='''+@ItemName1+''' WHERE ID=1
                        UPDATE #YS SET Item'+LTRIM(@RowNum)+'='''+@ItemName2+''' WHERE ID=2'
            EXEC (@Sql)
            SET @RowNum=@RowNum+1

         FETCH NEXT FROM cursor_YS 
         INTO @ItemName1,@ItemName2
        END        
        CLOSE cursor_YS
        DEALLOCATE cursor_YS

--查询转换后

        SELECT Item0,Item1,Item2,Item3,Item4,Item5 FROM #YS


        drop table #YS

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值