一、多行转一行
使用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
美人邦
法国贩毒网2
宗师叶问
食人俱乐部
甜蜜夏日
揭开圣诞节的面纱蒂娜的奇迹
康奈尔之盒
烈焰英雄
钟无艳
女儿国前传
婴儿车
真爱找麻烦
太空小子杰特之太空营地
假如爱有天意
高跟鞋
两个爸爸
与神同行对话教皇方济各
击雪
黄金诡事录
打怪
绝命银行
影
偷食抢食搵饭食