我需要计算多行中表中相同值的出现次数。
作为例子
http://sqlfiddle.com/#!6/8ca74/13
有一个包含多列主键的表(列A |列B)。
(fID_a) | type
1 | 'type A'
1 | 'type B'
2 | 'type A'
3 | 'type B'
3 | 'type D'
...
9 | 'type A'
9 | 'type B'
如何计算所有类型组合的出现次数
以上示例的预期结果
type | count
'type A' | 1
'type A type B' | 2
'type B type D' | 1
这仅适用于A列中的单次出现
SELECT Count(*) AS count,
type
FROM tbl_a
WHERE fid_a IN (SELECT fid_a
FROM tbl_a
GROUP BY fid_a
HAVING Count(*) = 1)
GROUP BY tbl_a.type;
答案 0 :(得分:1)
您可以使用字符串聚合将它们组合为每个fID_a
值,然后在该结果上进行聚合。这在SQL Server中有点痛苦,但可能:
select types, count(*), min(fID_a), max(fID_a)
from (select fID_a,
stuff((select ',' + type
from tbl_a a2
where a2.fID_a = a.fID_a
order by type
for xml path ('')
), 1, 1, '') as types
from tbl_a a
group by fID_a
) t
group by types;
我添加了其他id
的最小值和最大值,因此您可以仔细检查结果。