2017-12-11 13 views
0

タイトルに記載されているとおり、私は合成キー(メインキーと位置キー)とXML(固定スキーマ)を含むValue列を持つテーブルを持っています。xml列のキーと集計によるSQL Serverグループ

固定XMLは、その後のように見える:

<Data> 
    <ItemACount></ItemACount> 
    <ItemBCount></ItemBCount> 
</Data> 

ItemACountとItemBCount両方が正の整数を表します。

私は同じ主キー(ただし異なる位置キー)を持つグループレコードを希望し、各グループごとに各ItemACountとItemBCountの合計を計算します。

私は以下のようにSQLコードを記述します。

SELECT 
    MainKey AS MainKey 
    SUM ([Value].value('/Data/ItemACount/@value')) AS TotalItemACount , 
    SUM ([Value].value('/Data/ItemBCount/@value')) AS TotalItemBCount 
FROM 
    [dbo].[tblItems] 
GROUP BY 
    [MainKey] 

しかし、私は構文エラーを取得:

Cannot find either column "Value" or the user-defined function or aggregate "Value.value", or the name is ambiguous.

私は正しい構文であるかを理解したいと思います。

+0

チェックしてみてください。https://stackoverflow.com/questions/6786687/extracting-sum-of-data-from-xml-in-sql –

+0

@ロジェリオ・カルバリョ私を状況は少し異なります。私は別のxmlでフィールドを合計する必要があります(各フィールドはxmlごとに一意ですが、各行で繰り返されます) – Skary

+0

しかし、解決方法は同じですが、まずサブクエリーを作成してeとメインクエリはグループを適用します。 –

答えて

1

この質問はすでに答えこの

SELECT 
    MainKey AS MainKey 
    SUM ([Value].value(('/Data/ItemACount/@value)[1]', 'int')) AS TotalItemACount , 
    SUM ([Value].value(('/Data/ItemBCount/@value)[1]', 'int')) AS TotalItemBCount 
    FROM [dbo].[tblItems] 
    GROUP BY [MainKey] 
+0

私が必要とする通りに正確に動作します – Skary

関連する問題