1

我有一张这样的桌子;

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 错误。

当前命令发生严重错误。结果,如果有的话,应该丢弃。

任何帮助对我来说都很棒!:)

4

1 回答 1

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]

顺便说一句,尽量不要将您的列命名为 SQL Server 中的类型。

sql fiddle example简化数据

于 2013-10-30T07:54:11.537 回答