本文介绍了XML显式输出:按父标记分组不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我需要如下输出。但是当我执行我的代码时,我没有正确地将产品分组到每个父母下面(应该像在美国国家代码下我们需要有三个产品而在FR下我们需要有两个产品)。我也在这里放置了代码,请尽快帮助我。 <? xml version = 1.0 encoding = utf-8 ? > < ComProducts > < 国家/地区 代码 = 美国 > < 产品 > < manufacturername > abc < / manufacturername > < productname > xyz road < / productname > < upc > RJ < / upc > < / Product > < 产品 > < manufacturername > temp < / manufacturername > < productname > ppp road < / productname > < upc > RJ < / upc > < / Product > < 产品 > < manufacturername > ccc < / manufacturername > < productname > oli Com < / productname > < upc > CL < / upc > < / Product > < / Country > < 国家/地区 代码 = FR > < 产品 > < manufacturername > xxx < / manufacturername > < productname > aaa road < / productname > < upc > NY < / upc > < / Product > < 产品 > < manufacturername > eee < / manufacturername > < productname > olkiu road < / productname > < upc > CL < / upc > < / Product > < / Country > < / ComProducts > 代码: DECLARE @ Products TABLE (代码 VARCHAR ( 10 ), manufacturername VARCHAR ( 50 ), productname NVARCHAR ( 255 ), upc VARCHAR ( 100 ) ) INSERT 我NTO @ Products 选择 ' en-us',' abc ',' xyz road',' RJ' union 所有 选择 ' en-us',' temp',' ppp road',' RJ' union all 选择 ' fr-fr',' xxx',' aaa road',' NY' union all 选择 ' en-us',' ccc',' oli Com',' CL' union all 选择 ' fr-fr',' eee',' olkiu road',' CL' SELECT 1 AS 标签, NULL AS 父级, NULL AS ' ComProducts!1!', NULL AS ' 国家/地区!2!locale', NULL AS ' Products!3!', NULL AS ' Products!3!manufacturerName!Element', NULL AS ' Products!3!productName!cdata', NULL AS ' 产品!3!upc!元素' UNION ALL SELECT 2 AS 标签, 1 AS 父级, NULL ,代码, NULL , manufacturername, productname, upc FROM @ Products UNION 所有 SELECT 3 AS 标记, 2 AS 父级, NULL , NULL , NULL , manufacturername, productname, upc FROM @ Products FOR xml explicit 解决方案 DECLARE @Products TABLE ( code VARCHAR(10), manufacturername VARCHAR(50), productname NVARCHAR(255), upc VARCHAR(100) ) INSERT INTO @Products 选择'en-us','abc' ,'xyz road','RJ'联合所有选择'en-us','temp','ppp road','RJ'联合所有选择'fr-fr','xxx' ,'aaa road','NY'联盟全部选择'en-us','ccc','oli Com','CL'联合所有选择'fr-fr','eee' ,'olkiu road','CL' SELECT p1 .code为'@Code',( SELECT 1为Tag, 0为父, p2.manufacturername为[Product!1!manufacturername!ELEMENT], p2.productname as [Product!1!productname!CDATA], p2.upc as [Product!1!upc!ELEMENT] FROM @Products p2 WHERE p1.code = p2.code FOR XML EXPLICIT ) FROM @Products p1 GROUP BY p1.code FOR XML PATH('Country'),ROOT('ComProducts' ) I required output like below. But When I execute my code, I am not getting the product properly grouped under each parent (It should be like under "US" country code we need to have three products and under "FR" we need to have two products). I have placed code also here and Pls help me ASAP.<?xml version="1.0" encoding="utf-8"?> <ComProducts> <Country Code="US"> <Product> <manufacturername>abc</manufacturername> <productname>xyz road</productname> <upc>RJ</upc> </Product> <Product> <manufacturername>temp</manufacturername> <productname>ppp road</productname> <upc>RJ</upc> </Product> <Product> <manufacturername>ccc</manufacturername> <productname>oli Com</productname> <upc>CL</upc> </Product> </Country> <Country Code="FR"> <Product> <manufacturername>xxx</manufacturername> <productname>aaa road</productname> <upc>NY</upc> </Product> <Product> <manufacturername>eee</manufacturername> <productname>olkiu road</productname> <upc>CL</upc> </Product> </Country> </ComProducts> Code : DECLARE @Products TABLE ( code VARCHAR(10), manufacturername VARCHAR(50), productname NVARCHAR(255), upc VARCHAR(100) ) INSERT INTO @Products select 'en-us', 'abc', 'xyz road', 'RJ' union all select 'en-us', 'temp', 'ppp road', 'RJ' union all select 'fr-fr', 'xxx', 'aaa road', 'NY' union all select 'en-us', 'ccc', 'oli Com', 'CL' union all select 'fr-fr', 'eee', 'olkiu road', 'CL' SELECT 1 AS Tag, NULL AS Parent, NULL AS 'ComProducts!1!', NULL AS 'Country!2!locale', NULL AS 'Products!3!', NULL AS 'Products!3!manufacturerName!Element', NULL AS 'Products!3!productName!cdata', NULL AS 'Products!3!upc!Element' UNION ALL SELECT 2 AS Tag, 1 AS Parent, NULL, code, NULL, manufacturername, productname, upc FROM @Products UNION ALL SELECT 3 AS Tag, 2 AS Parent, NULL, NULL, NULL, manufacturername, productname, upc FROM @Products FOR xml explicit 解决方案 DECLARE @Products TABLE ( code VARCHAR(10), manufacturername VARCHAR(50), productname NVARCHAR(255), upc VARCHAR(100) ) INSERT INTO @Products select 'en-us', 'abc', 'xyz road', 'RJ' union all select 'en-us', 'temp', 'ppp road', 'RJ' union all select 'fr-fr', 'xxx', 'aaa road', 'NY' union all select 'en-us', 'ccc', 'oli Com', 'CL' union all select 'fr-fr', 'eee', 'olkiu road', 'CL' SELECT p1.code as '@Code', ( SELECT 1 as Tag, 0 as Parent, p2.manufacturername as [Product!1!manufacturername!ELEMENT], p2.productname as [Product!1!productname!CDATA], p2.upc as [Product!1!upc!ELEMENT] FROM @Products p2 WHERE p1.code = p2.code FOR XML EXPLICIT )FROM @Products p1 GROUP BY p1.codeFOR XML PATH ('Country'), ROOT ('ComProducts') 这篇关于XML显式输出:按父标记分组不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 10-12 15:55