一、多行转一行
使用FOR XML函数,将查询结果集以XML形式展现,将多行的结果,展示在同一行。
查询语句:
SELECT ',' + CardCode
FROM OCRD
WHERE CardType = 'C'
FOR XML PATH('')
二、去除转换后字符串的首位分隔符
如果要去除首位多余的分隔符,可以使用 STUFF ,如下所示:
查询语句:
SELECT STUFF((
SELECT ',' + CardCode
FROM OCRD
WHERE CardType = 'C'
FOR XML PATH('')
), 1, 1, '') CardCodeStr
三、应用场景举例
如: OPOR 表为【采购订单主表】POR1表为【采购订单子表】,两表通过 DocEntry字段关联,现需要显示采购订单清单,一个单据一行,该单据包含的物料编号拼接到一个字段显示:
查询语句:
SELECT T0.DocEntry ,STUFF(( SELECT ',' + U0.ItemCode
FROM POR1 U0
WHERE U0.DocEntry = T0.DocEntry
FOR XML PATH('')), 1, 1, '') ItemCodeStr
FROM OPOR T0
WHERE T0.DocEntry < 10