Sql 分组结果的正确计数

Sql 分组结果的正确计数,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个程序: ALTER PROCEDURE [dbo].[GetActualFeedbackQueueTree] @dtNow datetime as BEGIN select count(f.Id) as [Total], f.AccountCode, f.AccountName, f.Utc, f2.CityCode, f2.CityName from

我有一个程序:

ALTER PROCEDURE [dbo].[GetActualFeedbackQueueTree]
    @dtNow datetime
as
BEGIN
    select
        count(f.Id) as [Total],
        f.AccountCode,
        f.AccountName,
        f.Utc,
        f2.CityCode,
        f2.CityName
    from
        InnerPortal.Feedback.QueueFeedback f
    left join
        InnerPortal.Feedback.QueueFeedback f2
    on
        f2.AccountCode = f.AccountCode
    where
        (f.Done is null or f.Done = 0) and 
        (f.Busy is NULL or f.Busy = 0) and
        ((DATEPART(hour, DATEADD(HOUR, f.Utc, @dtNow)) >= 9 ) and
        (DATEPART(hour, DATEADD(HOUR, f.Utc, @dtNow)) <= 20))
    group by
        f.AccountCode, f2.CityCode,
        f2.CityName, f.AccountName, f.Utc
END
返回16行,但过程结果为256行

目标是获取使用相同帐户收集的行数。如何使其正确工作? 谢谢

软件:T-Sql,Ms Sql server 2012

您肯定想要

count(distinct(f.Id))

如果将该表与其自身联接,并且该表有16行,其AccountCode为01507,则该值将乘以256。我确信您缺少一些父子关系,无法将此查询生成树。如果您发布一些示例数据和预期输出,可能有人会帮助您。您将表连接到
AccountCode
上的自身,我假设该表重复了多次,因此您得到了重复的行,这将增加计数并解释为什么会得到256行。
count(distinct(f.Id))