2012-08-22 56 views
0

我有兩列的表格。外鍵標識符和XML列。 XML列包含有關外部對象的詳細信息。例如,如果我的表包含以下內容:SQL Server:從多個XML行獲取唯一計數?

1 | <details><software name="iTunes" /></details> 
1 | <details><software name="iPhoto" /><software name="iTunes" /></details> 
2 | <details><software name="iTunes" /><software name="MSSQL" /></details> 
2 | <details><software name="Visual Studios" /></details> 

如何運行一個查詢,將讓我每實體「軟件」的獨特的計數?因此,例如,預期結果是:

1 | 2 
2 | 3 

其中列1是標識符,列2是唯一總和。

最近我已經能夠得到的是下面的查詢:

SELECT 
    DISTINCT 
    id, 
    details.value('count(/details/software)', 'int') AS SoftwareCount 
FROM 
    detailsTable 

但它沒有在那裏的近有用。 (它顯示每個計數找到的唯一行)。

回答

2
select 
    id, 
    COUNT(distinct(x.sw.value('@name','varchar(50)'))) 
from 
    detailstable 
cross apply 
    detailstable.details.nodes('/details/software') x(sw) 
group by id