在XML元素外部加入Temp表

时间:2018-06-11 15:32:42

标签: sql-server xml

我是XML + SQL模块的新手,我有一个代码可以选择常规列和一大堆XML数据。

以下是我的示例代码:

create table #temp(cid int, val int)
insert into #temp values
(1,11),
(2,12),
(3,12)

select
    t1.cid,
    xml =
        (
        select t2.cid,t2.val
        from #temp t2
        join #temp t1  on t2.cid = t1.cid
        for xml Path(''), type)
    from #temp t1 

drop table #temp

期望的输出是:

enter image description here

Rexter链接:http://rextester.com/HLZS59752

任何帮助??

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题。

示例

select
    t1.cid,
    xml = (Select t1.* for xml path('') )
    from #temp t1 

<强>返回

cid xml
1   <cid>1</cid><val>11</val>
2   <cid>2</cid><val>12</val>
3   <cid>3</cid><val>12</val>   -- Last record in #temp is (3,12)

答案 1 :(得分:0)

感谢@John Cappelletti的回答。这有帮助。我找到的一个mroe解决方案是:

select
    t1.cid,
    xml =
        (
        select t2.cid,t2.val
        from #temp t2
            where t1.cid = t2.cid
        for xml Path(''), type)
    from #temp t1

我没有加入,而是在Where子句中添加了条件并且它有效。 更新了Rexter链接:http://rextester.com/MGXDC39580