简体   繁体   English

使用查询创建 SQL XML

[英]SQL XML creation using query

I am trying to generate XML file code using SQL from Database which has two columns with Duplicate Value and one column with different values.我正在尝试使用数据库中的 SQL 生成 XML 文件代码,该数据库具有两列具有重复值的列和具有不同值的一列。 I used code similar to this我使用了类似的代码

DECLARE @SelectXML bit = 1 SELECT @XMLResult = convert(varchar(max),( SELECT distinct max(Num1) 'Num1' , max(Num2) 'Num2' ,(case when Side='1' then 'L' else 'R' end) 'Num3/Side' ,(case when Side='1' then 'L' else 'R' end ) 'Num3/Side' From(select Num1,Num2,Num3 Table1) A group by Side DECLARE @SelectXML bit = 1 SELECT @XMLResult = convert(varchar(max),( SELECT distinct max(Num1) 'Num1' , max(Num2) 'Num2' ,(当 Side='1' 然后 'L' else ' R' end) 'Num3/Side' ,(case when Side='1' then 'L' else 'R' end ) 'Num3/Side' From(select Num1,Num2,Num3 Table1) A group by Side

FOR XML PATH(''),TYPE, ROOT('rootnode') )) FOR XML PATH(''),TYPE, ROOT('rootnode')))

IF @SelectXML = 1 BEGIN SELECT convert(xml,@XMLResult) END Print @XMLResult IF @SelectXML = 1 BEGIN SELECT convert(xml,@XMLResult) END 打印@XMLResult

which gives result like this这给出了这样的结果

<?xml version="1.0"?>

-<rootnode>

<Num1>200</Num1>

<Num2>260.8000</Num2>


-<Num3>

<Side>LL</Side>

</Num3>

<Num1>200</Num1>

<Num2>260.8000</Num2>


-<Num3>

<Side>RR</Side>

</Num3>

</rootnode>

I want last Num3 only one column and with Two rows like我想要最后一个 Num3 只有一列和两行

<?xml version="1.0"?>

-<rootnode>

<Num1>200</Num1>

<Num2>260.8000</Num2>


-<Num3>

<Side>L</Side>

<Side>R</Side>

</Num3>

</rootnode>

is it possible to add two rows in one column in XML with SQL query是否可以使用 SQL 查询在 XML 的一列中添加两行

You need to have another for xml subquery for your Num3 .您需要为Num3设置另一个for xml subquery

DECLARE @XMLResult varchar(max)
DECLARE @SelectXML bit = 1 
SELECT @XMLResult = convert(varchar(max)
    ,( SELECT max(Num1) 'Num1' 
    , max(Num2) 'Num2' 
    , (select 
         max(case when t.Side='1' then 'L' else 'R' end) 'Side'
         From Table1 t
         Where t.Num1 = max(A.Num1) or t.Num2 = max(A.Num2)
         Group by t.Num1, t.Num2
        FOR XML PATH(''), TYPE) 'Num3'
    From Table1 A 

FOR XML PATH(''),TYPE, ROOT('rootnode') ))

IF @SelectXML = 1 BEGIN SELECT convert(xml,@XMLResult) END Print @XMLResult

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM