SQL:如何计算B列中的A列实例

时间:2014-03-19 15:23:54

标签: sql sql-server-2012

我有一个包含2列A和B的表,它们代表两者之间的连接图。

A  B

1  3
2  5
4  2
3  5
2  3 

我需要找到列B中包含A列的实例(包括0)

因此,对于上面的示例,我需要结果集

A  OccurencesInB

1  0
2  1
3  2
4  0

我到目前为止最好的是

SELECT B, COUNT(*) AS TABLE_COUNT
FROM TABLE
GROUP BY B
ORDER BY TABLE_COUNT DESC

这没有找到B中没有出现的A的实例,这是至关重要的。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

使用相关的子查询:

SELECT A, 
       TABLE_COUNT = (SELECT COUNT(*) 
                      FROM TableName t2
                      WHERE t2.B = t1.A) 
FROM TableName t1
GROUP BY A
ORDER BY TABLE_COUNT DESC, A 

结果:

A   TABLE_COUNT
3   2
2   1
1   0
4   0