我有两张桌子;我们称之为TableA和TableB。 TableB的每个元素以多对一关系与TableA的元素相关联。 TableA的某些元素可能在TableB中没有对应的元素。
我需要选择TableA中的每个元素,以及一个列,对于结果集中的每一行,它将包含TableB中与TableA中该行相关联且具有特定属性的元素数。
使用MS SQL Server 2008(需要也可以在SQL Server 2005中使用)。
答案 0 :(得分:9)
<强>更新强>
SELECT A.elementid, A.column1, A.column2, A.column3,
COUNT(CASE WHEN B.someColumn > 0 THEN B.elementid ELSE NULL END) Q
FROM TableA A
LEFT JOIN TableB B
ON A.elementid = B.elementid
GROUP BY A.elementid, A.column1, A.column2, A.column3
答案 1 :(得分:3)
SELECT TableA.MyColumn, COUNT(TableB.SomeColumn) AS MyCount
FROM TableA
LEFT OUTER JOIN TableB ON TableA.TableAKeyColumn = TableB.TableAKeyColumn
GROUP BY TableA.MyColumn