2013-10-30 43 views
1

我有一個這樣的表;TSQL加入和組Xml列值

http://i.stack.imgur.com/QkyB6.png

我要總結每個第一5列,並與XML列逗號值的字符串連接。 (它存儲的結果是這樣的:<r><p>example</p><p>example2</p></r>

select 
    sum(Value1), sum(Value2), sum(Value3), sum(Value4), sum(Value5), 
    (select t.c.value('.', 'varchar(400)') + ',' 
    from Xml.nodes('/r/p') as t(c) 
    for xml path('')), 
    DateTime as DateTime 
from table 
group by DateTime 

但我例外獲取XML錯誤與組。

當前命令發生嚴重錯誤。如果有的話,結果應該被丟棄。

任何幫助對我來說都很棒! :)

回答

1

恐怕你不能沒有子查詢做到這一點:

select 
    sum(a.Value1), 
    sum(a.Value2), 
    sum(a.Value3), 
    sum(a.Value4), 
    sum(a.Value5), 
    stuff(
     (
      select ',' + t.c.value('.', 'varchar(400)') 
      from table as b 
       outer apply b.[Xml].nodes('r/p') as t(c) 
      where b.[DateTime] = a.[DateTime] 
      for xml path(''), type 
     ).value('.', 'nvarchar(max)') 
    ,1,1,'') 
from table as a 
group by a.[DateTime] 

BTW儘量不要命名爲列在SQL Server類型。

sql fiddle example與簡化的數據

+1

真的感謝的人!你節省了我的時間:)是的,我只是改變了最簡單的方式名稱再次感謝! –