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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两张表联合查询,其中一张表对应多行。将多行的数据合并为一行,并用,隔开相关的知识,希望对你有一定的参考价值。

直接上代码

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


以上是关于两张表联合查询,其中一张表对应多行。将多行的数据合并为一行,并用,隔开的主要内容,如果未能解决你的问题,请参考以下文章

sql如何查询出一张表的的某个字段数据更换成另一张表的字段数据

sql怎么把两张表合并成一张

Oracle中的多行插入查询(从一张表中选择多行并插入到另一张表中[重复]

SQL多张表如何合并成一张报表?

sqlserver 把两个sql查询语句查询出来的两张表合并成一张表

SQL关联两张表查数据,结果只显示一条。