2016-03-12 43 views
0

我已经看到类似的关于计数器和计算器限制的问题,但我还没有完全能够应用到这里。我正在计算满足特定条件的其他行的计数并显示该计数。但是如果要显示的最终计数是0,我不希望它显示出来。只有当计算的计数大于0时才选择一行

这里是我的尝试,使用具有:

select p.[ref] as [ID], 
p.[first] as [First], 

(select count(distinct f.[id]) from [field] f 
where (f.[related] = p.[id]) and (f.[field] = 'person_that_called') 
having count(distinct f.[id])>0) as [Total Calls Made] 

from [person] p 

但是这会导致这样的显示:

ID  First Total Calls Made 
--- | ---- | ---------------- 
011 | Bob |  4 
012 | Susan |  2 
013 | Joe |  Null 

没有HAVING部分,乔的 “总来电” 显示为0。但是我怎么能让乔根本不露面呢?

+0

我删除了MySQL的标签。该语法看起来更像SQL Server。 –

回答

1

使用join

select p.[ref] as [ID], p.[first] as [First], f.[Total Calls Made] 
from [person] p join 
    (select f.[related], count(distinct f.[id]) as [Total Calls Made] 
     from [field] f 
     where f.[field] = 'person_that_called' 
     group by f.[related] 
    ) f 
    on f.related = p.id 
where [Total Calls Made] > 0; 
相关问题