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 に答える