0

这给我带来了更多的麻烦。

我有以下示例表:

____________________       ____________      
|   Name|   Number |       | Number   |
|_______|__________|       |__________|
| Alice |     1    |       |    1     |
| Bob   |     2    |       |    1     |
|_______|__________|       |__________|

我希望我的结果是:

_____________________________________
| Name   |   Number  | Count(Number) |
|________|___________|_______________|
| Alice  |     1     |      2        |
| Bob    |     2     |      0        |
|________|___________|_______________|

我要来回走,但我相信这不应该那么棘手。我想我错过了一些东西。

我修改了戈登的回答:

 select name, number count(t2.number)
 from table1 t1, 
 table2 t2 
 where t1.number = t2.number (+)
 group by t1.number;
4

1 回答 1

1

你需要一个连接和聚合。但是,连接需要是 aleft outer join以保留所有行:

select name, number, count(t2.number)
from table1 t1 left outer join
     table2 t2
     on t1.number = t2.number
group by t1.name, t1.number;

并且,count()正在计算第二个表中的非 NULL 值,因此您可以0在没有匹配项时得到。

于 2013-08-07T14:19:13.557 回答