【发布时间】:2017-01-20 11:18:16
【问题描述】:
有人能解释一下为什么如果我使用 SELF JOIN 和 COUNT 会得到与仅使用 COUNT 命令不同的结果吗?
与ControlNo 列相同的表。列中的值不是唯一的。
这个查询给了我15586的总计数。
select (Select COUNT(ControlNo)
from tblQuotes Q1
where Q1.ControlNo = a.ControlNo
) QuotedTotal
FROM tblQuotes a
inner join lstlines l on a.LineGUID = l.LineGUID
where l.LineName = 'EARTHQUAKE' AND YEAR(EffectiveDate) = 2016
但是,如果我运行这个查询,它会给我15095 的总数。
select COUNT(ControlNo) as QuotedTotal
from tblQuotes a
inner join lstlines l on a.LineGUID = l.LineGUID
where l.LineName = 'EARTHQUAKE' AND YEAR(EffectiveDate) = 2016
究竟是什么改变了总量,为什么?
为什么我要使用第一种情况?
是否有任何方法可以修改第一个查询以获得15586 的总和而不按每一行分解?
谢谢你
【问题讨论】:
-
如果您首先共享表结构会有所帮助。
ControlNo是唯一字段吗?似乎tblQuotes中有一些行共享ControlNo字段中的值,但并非所有行都加入lstlines表。您是否也需要计算这些? -
列
ControlNo不是唯一的,这可能是结果不同的原因。