[英]SQL XML creation using query
我正在嘗試使用數據庫中的 SQL 生成 XML 文件代碼,該數據庫具有兩列具有重復值的列和具有不同值的一列。 我使用了類似的代碼
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')))
IF @SelectXML = 1 BEGIN SELECT convert(xml,@XMLResult) END 打印@XMLResult
這給出了這樣的結果
<?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>
我想要最后一個 Num3 只有一列和兩行
<?xml version="1.0"?>
-<rootnode>
<Num1>200</Num1>
<Num2>260.8000</Num2>
-<Num3>
<Side>L</Side>
<Side>R</Side>
</Num3>
</rootnode>
是否可以使用 SQL 查詢在 XML 的一列中添加兩行
您需要為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.