两张表联合查询,其中一张表对应多行。将多行的数据合并为一行,并用,隔开

时间:2023-02-10 20:12:11

直接上代码

1 SELECT  DISTINCT [A].[BizID] 
2 ,STUFF((SELECT ','+ ActivityModelStepName + ':'+ UserName FROM [dbo].BizBaseStep WHERE BizID = A.BizID
3 FOR XML PATH('')
4 ) ,1,1,'' )AS auditor
5 FROM [dbo].[BizBase] AS A

查询结果如下:

两张表联合查询,其中一张表对应多行。将多行的数据合并为一行,并用,隔开

 

for xml path(‘’) 作用是将查询结果组成一个xml; 例如 :      SELECT TOP 5 BizID,ApplySubject  FROM bizbase  FOR XML PATH ('') 查询结果为:             <BizID>000299a4-daed-49f5-ae5f-6e4500917d58</BizID>            <ApplySubject>关于青岛海创开发建设投资有限公司青岛铁路北客站安置区B-1区项目李沧区板桥坊河以南、胶济客运既有线以西、安顺路以东单体竣工验收的申请</ApplySubject>            <BizID>00037f41-77dc-4393-8224-08655cdf1869</BizID>            <ApplySubject>0327关于道路包车客运经营许可的申请</ApplySubject>            <BizID>0003ee84-01a5-4c36-8ba0-d5b9bfa1670b</BizID>            <ApplySubject>关于林语山畔(二期:3#-7#、12#楼及幼儿园)工程剩余工程工程安全报监的申请</ApplySubject>            <BizID>00045126-e379-45fc-a50b-e136ebaf3ca8</BizID>            <ApplySubject>关于青岛高新技术产业开发区管理委员会公共事业服务中心广盛路道路绿化提升工程汇智桥路至华中路报审修建性详细规划方案报审修建性详细规则方案的申请</ApplySubject>            <BizID>000507e6-7085-4d97-a1bb-236aaefd9545</BizID>            <ApplySubject>关于青岛浩阔源福顺工贸有限公司无公害水产品产地认定</ApplySubject>     STUFF  作用是删除 第一个‘,’(sql的下标是从 1开始的)

在一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串

SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO

下面是结果集

aijklmnef