2010-12-28 22 views
4

2つのテーブルがあります。それらをTableAとTableBと呼ぶことにしましょう。 TableBの各要素は、多対1の関係でTableAの要素に関連付けられます。 TableAのいくつかの要素は、TableBに対応する要素を持たない場合があります。SQL Serverの結合とカウント

結果セットの各行に対して、TableAのその行に関連付けられているTableBの要素の数が含まれ、特定のプロパティを持つ列と共に、TableAのすべての要素を選択する必要があります。

MS SQL Server 2008を使用する(SQL Server 2005でも動作する必要があります)。

答えて

7

は、* I *は、唯一のAの各行に関連付けられたBの要素の数を取得する必要があり、それは特定の特性を満足

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 
+0

更新します。具体的には、このプロパティは「B.someColumn> 0」としましょう。 –

+0

これを反映するように答えを更新しました – Lamak

+0

ありがとう!私が探していた魔法の式はいつですか? –

3
SELECT TableA.MyColumn, COUNT(TableB.SomeColumn) AS MyCount 
FROM TableA 
LEFT OUTER JOIN TableB ON TableA.TableAKeyColumn = TableB.TableAKeyColumn 
GROUP BY TableA.MyColumn 
+0

上記の答えに対するコメントをご覧ください。 –

+0

@Brennan Vincent答えの順序は、SQL Tableの行と同じように、入力した順序を反映しません –

関連する問題