正确的分组结果计数

时间:2015-05-05 14:08:09

标签: 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
        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

我按AccountNameCityName对行进行分组。结果我们有像树一样的东西。问题是[Total]无法正确计算。 然后我得到一个特殊AccountCode的选择,如果少得多,那么得到我作为程序的结果。例如:

select count(f.Id) from Feedback.QueueFeedback f where f.AccountCode = '01507'

返回16行,但过程结果为256。

目标是使用相同的帐户获取已收集行的计数。如何让它正常工作? 感谢。

软件:T-Sql,Ms Sql server 2012

1 个答案:

答案 0 :(得分:3)

非常确定你想要

count(distinct(f.Id))