我正在尝试使用SQL Server 2012中的FOR XML
格式化查询的输出。
每个PART_NO
可以有不同数量的SUPPLIER_PART_NUMBER
映射到它。
该表格包含以下格式的数据。
PART_NO SUPPLIER_PART_NO
------- ----------------
AAA 1
AAA 2
BBB 3
BBB 4
BBB 5
所需的输出如下,其中AAA部件有两个供应商部件号,BBB部件有三个供应商部件号,供应商部件号嵌套在部件号下面。
<root>
<item PartNo ="AAA">
<mpn>1</mpn>
<mpn>2</mpn>
</item>
<item PartNo ="BBB">
<mpn>3</mpn>
<mpn>4</mpn>
<mpn>5</mpn>
</item>
</root>
我可以得到的最接近的是,但这不会将mpn
归入PartNo
下:
SELECT
[PART_NO] as 'item/@PartNo',
[SUPPLIER_PART_NO] as 'mpn'
FROM
[dbo].[supplier_part_mapping2]
ORDER BY
PART_NO
FOR XML PATH('') , ROOT('root');
提前谢谢
答案 0 :(得分:0)
试试这个:
SELECT
p1.PART_NO as 'item/@PartNo',
(SELECT
SUPPLIER_PART_NO AS 'mpn'
FROM
[dbo].[supplier_part_mapping2] p2
WHERE
p1.PART_NO = p2.PART_NO
FOR XML PATH(''), TYPE) AS 'item'
FROM
[dbo].[supplier_part_mapping2] p1
GROUP BY
PART_NO
ORDER BY
PART_NO
FOR XML PATH('') , ROOT('root');
这应该产生:
https://github.com/Achse/geth-jsonrpc-php-client
您基本上需要分组 PART_NO
,这样每个不同的<item>
只能获得一个PART_NO
条目,您需要抓住“子元素“作为子查询,在一个父节点下将它们全部列在一起。