2016-05-17 3 views
0

Я пытаюсь создать XML-вывод из SQL, который имеет 3 вложенных оператора, но имеет довольно минимальный опыт в этой области. Код, который я написал ниже:XML-вывод из SQL Server 2008

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: п примеров и ожидаемого результата он читает в волшебной стеклянной колбой ...

Во всяком случае, это

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

Извините за недостаток информации. Это действительно отлично работает, так что спасибо вам большое! –