在做报表的时辰,可能需要将查询成果某一列的多行记实,利用逗号分隔,拼接当作一个字符串。这个时辰,该若何实现呢?好比,在bom表中,将查询成果的物料编码列,拼接当作一个字符串,并且,字符串中物料编码不反复
建立一个姑且表,用于演示sqlserver数据库中,若何将一个字段的数据拼接当作一个字符串。例如:将物料清单表中的物料编码,利用逗号分隔,拼接当作一个字符串
IF OBJECT_ID('tempdb..#tblBom') IS NOT NULL DROP TABLE #tblBom;
CREATE TABLE #tblBom(
OrderNo varchar(50), -- 订单号
ItemCode varchar(50), -- 物料编码
ItemName varchar(50) -- 物料名称
);
 
 往姑且表中插入几行测试数据,模拟物料清单
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019001', 'MC001', '物料1');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019001', 'MC002', '物料2');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019001', 'MC003', '物料3');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019002', 'MC001', '物料1');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019003', 'MC005', '物料5');
 
 查询姑且表1中的测试数据
select * from #tblBom;
 
 假设表中的数据很少,并且,需求也是要将所有的物料编码,利用逗号拼接起来,那么,就可以利用for xml path语法
select ',' + ItemCode from #tblBom for xml path('')
 
 从上面的成果可以看出,不异的物料编码,在字符串中反复呈现了,那么,若何才能拼接不反复的物料编码呢?其实,直接加上去重关头字distinct就可以了
select distinct ',' + ItemCode from #tblBom for xml path('')
 
 上面的物料编码固然去重了,可是,拼接的字符串最前面是以逗号起头的,若何才能去失落这个逗号呢?这个时辰,就需要利用stuff函数了
select (stuff((select distinct ',' + ItemCode from #tblBom for xml path('')),1,1,''))
 
 上面都是查询整个表的成果,现实利用时,经常需要按照必然的前提过滤,这个时辰就需要利用联系关系语句了
select ItenCode = (select stuff((select distinct ',' + ItemCode from #tblBom where OrderNo = tbl.OrderNo for xml path('')), 1, 1, ''))
from #tblBom tbl
where tbl.OrderNo = 'PO2019001'
group by tbl.OrderNo
 
  
                    0 篇文章
 xiaonan123
                            189 文章
                            xiaonan123
                            189 文章
                         汤依妹儿
                            97 文章
                            汤依妹儿
                            97 文章
                         luogf229
                            46 文章
                            luogf229
                            46 文章
                         jy02406749
                            45 文章
                            jy02406749
                            45 文章
                         小凡
                            34 文章
                            小凡
                            34 文章
                         Daisy萌
                            32 文章
                            Daisy萌
                            32 文章
                         我的QQ3117863681
                            24 文章
                            我的QQ3117863681
                            24 文章
                         华志健
                            23 文章
                            华志健
                            23 文章
                         
                如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!