sql server - T-SQL: How to select rows as XML element -
i have table
cost renderedvalue sectionname ------------------------------------ 100.00 1000.00 section1 200.00 2000.00 section2 300.00 3000.00 section3 400.00 4000.00 section4
and want produce xml:
<root> <section1cost>100.00</section1cost> <section1renderedvalue>1000.00</section1renderedvalue> <section2cost>200.00</section2cost> <section2rendredvalue>2000.00</section2rendredvalue> </root>
i able produce using tsql ( test table name)
select (select cost 'cost'from test sectionname = 'section1') 'section1cost', (select renderedvalue 'cost'from test sectionname = 'section1') 'section1renderedvalue', (select cost 'cost'from test sectionname = 'section2') 'section2cost', (select renderedvalue 'cost'from test sectionname = 'section2') 'section2rendredvalue' xml path(''), root('root')
but ugly , think not optimized . can more elegant or whatever have correct?
i may have @ 30 rows in test table
this gives xml that's different (using section tags), sql script should more efficient:
select test.sectionname [@sectionname], test.cost [cost], test.renderedvalue [renderedvalue] test order test.sectionname xml path ('section'), root('sections');
this output script sample table provided:
<sections><section sectionname="section1"><cost>100.0000</cost><renderedvalue>1000.0000</renderedvalue></section><section sectionname="section2"><cost>200.0000</cost><renderedvalue>2000.0000</renderedvalue></section><section sectionname="section3"><cost>300.0000</cost><renderedvalue>3000.0000</renderedvalue></section><section sectionname="section4"><cost>400.0000</cost><renderedvalue>4000.0000</renderedvalue></section></sections>
Comments
Post a Comment