SQL多行数据合并一行

话不多说上代码

--声明表变量DECLARE @Production TABLE (              ID UNIQUEIDENTIFIER NOT NULL,              ProductionNo NVARCHAR(100) NOT NULL              )--插入数据INSERT INTO @ProductionSELECT  TOP 5WorkOrderID ,WorkOrderNo FROM @Production1 --查询表变量数据SELECT * FROM @Production

此处作为测试声明了表变量@Production,使用表变量作测试表进行测试;

在日常工作或者学习中可替换为已创建的表;

现在表中已有数据,接下来进行数据合并,需要用到STUFF函数和FOR XML PATH函数;

--声明表变量DECLARE @Production TABLE (              ID UNIQUEIDENTIFIER NOT NULL,              ProductionNo NVARCHAR(100) NOT NULL              )--插入数据INSERT INTO @ProductionSELECT  TOP 5WorkOrderID ,WorkOrderNo FROM @Production1 SELECT * FROM @Production --DECLARE @WorkOrderNo NVARCHAR(100)--SET @WorkOrderNo ='120000006930'SELECT ProductionBatchNo = (        stuff(                (                    SELECT                        ',' + CAST (ProductionNo AS VARCHAR)                                FROM @Production                                            GROUP BY ProductionNo                    FOR xml path ('')                                    ),                1,1, ''                )            )

通过STUFF函数和FOR XML PATH函数实现了多行数据转换为一行的功能.

FOR XML PATH('') 函数将查询结果集以XML形式展现,将多行的结果,展示在同一行。

EG:

SELECT    ',' + CAST (ProductionNo AS VARCHAR)            FROM @Production                        GROUP BY ProductionNoFOR xml path ('')

STUFF() 函数删除字符串的一部分,然后将另一部分插入到字符串中,从指定位置开始。

实例

从字符串中删除3个字符,从位置1开始,然后在位置1插入"HTML";

SELECT STUFF('SQL Tutorial', 1, 3, 'HTML');

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值