2017-12-11 3 views
0

제목에 설명 된대로 구성된 키 (기본 키 및 위치 키)와 XML (고정 스키마 포함)이 포함 된 값 열이있는 테이블이 있습니다. 키에 의한 SQL Server 그룹 및 xml 열에 대한 합계

고정형 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

ROGERIO 카르발류 @ 내 상황이 조금 다릅니다 다른 XML에서 필드를 요약해야합니다 (각 필드는 xml마다 고유하지만 각 행에서 반복됩니다) – Skary

+0

그러나 솔루션은 동일하지만 하위 equery를 만들어 e와 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