2016-05-17 39 views
0

我想從SQL創建一個XML輸出,它有3個嵌套語句,但在這方面的經驗很少。我寫的代碼如下:來自SQL Server 2008的XML輸出

select 
replace(replace(replace(
(
select ID as [@ID], 
(select cast(Name as int) as [@Name], 
(select num as [@Number], 
from #tbl_new_claims_export 
for xml path('Num'),root('Numbers'), type 
) 
from #tbl_new_claims_export 
for xml path('LineItem'), type 
) 
from #tbl_new_claims_export 
for XML PATH('Line'),ROOT('Lines') 
),'><','>'+char(10)+'<'),'<Num', char(9)+'<Num'), '<Num>', char(9)+'<Num>') ; 

我試圖創建一個輸出,看起來像這樣:

<Lines> 
<Line ID ="1"> 

<LineItem Name ="Michael"/> 

<Numbers> 

<Num Number="24"</Num> 

</Numbers> 

</LineItem> 

</Line> 

的每一行,我希望看到的線,名稱和號碼如上所示。但是,它在每行下顯示多個名稱,然後重複下面的數字。任何人都可以幫我解決這個問題嗎?

感謝。

+0

如果您可以發佈表結構和臨時表的一些示例數據,這將非常有幫助。作爲發佈,它非常難以提供幫助。 –

回答

0

無採樣數據與1:N的例子和預期輸出是在魔術玻殼閱讀...

反正你指定此

SELECT 
    1 AS [Line/@ID] 
    ,'Michael' AS [LineItem/@Name] 
    ,24 AS [Numbers/Num/@Number] 
FOR XML PATH('Lines') 

會產生完全相同的輸出:

<Lines> 
    <Line ID="1" /> 
    <LineItem Name="Michael" /> 
    <Numbers> 
    <Num Number="24" /> 
    </Numbers> 
</Lines> 

如果您需要進一步的幫助,請指定最小化和縮減的測試場景。最好將是一個小提琴或一些可粘貼的代碼,如

DECLARE @tbl TABLE(ID INT, col1 VARCHAR(MAX)/*more columns*/); 
INSERT INTO @tbl VALUES (1,'test1')/*more values*/ 
+0

抱歉缺少信息。這實際上雖然完美,但非常感謝你! –