来自2个表的SQL计数为true / false

时间:2019-02-01 14:16:07

标签: sql count

我有2张桌子:

  • 表1:键,品牌,类型,欧洲,RefNr
  • 表2:密钥,所有者,地址,RefNr

两个表中的RefNr是唯一标识符,表1中的European是一个True / False字段。

我的问题是,如何计算所有拥有欧洲汽车的车主?

3 个答案:

答案 0 :(得分:1)

根据给出的信息,我想您正在寻找具有简单where条件的联接?

select count(distinct t2.owner)
from table1 t1
  join table2 t2 on t1.refnr = t2.refnr
where t1.european = true;

如果某人拥有多辆汽车,则distinct t2.owner是必需的。

答案 1 :(得分:1)

以下是Sql Server的解决方案:

Select count(t2.Owner) as EuropeanCarOwner
From Table1 t1
Inner join Table2 t2 on t2.RefNr = t1.RefNr
where t1.European = 1

请注意,欧洲列不是布尔类型而是varchar,您可以在while子句中执行t1.European ='true'

如果某人可以拥有多辆汽车,并且每辆汽车都以不同的记录形式输入,那么如果需要,可以通过count(distinct t2.owner)

对每个所有者进行一次计数

答案 2 :(得分:0)

并非说明您正在使用哪个DBMS,它应该可以在SSMS中工作;

    SELECT  COUNT(*) AS EuroOwners
    FROM Table1 t1
    INNER JOIN Table2 t2 ON t1.RefNr = t2.RefNr AND t1.European = 1