我有一个有两列的表。一个外键标识符和一个 XML 列。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
但它几乎没有用处。(它为找到的每个计数显示一个唯一的行)。