TSQL确定正确的日期

| 昨天我发现我的表设计或从中提取数据的查询存在问题,我需要一些有关如何继续解决问题的指导/建议。 我的表如下:
CREATE TABLE 
[DT].[CountTotals](
    [Acct] [varchar](8) NOT NULL,
    [TCount] [smallint] NOT NULL ,
    [TDate] [smalldatetime] NOT NULL,
    [PostDate] [smalldatetime] NOT NULL ,
    [DayCount] [tinyint] NULL ,
    [AggCount] [smallint] NULL ,
    [AggNumber] [numeric](10, 0) NULL,
    [IsReadyToArchive] [bit] NOT NULL 
)
我使用以下视图提取此数据:
CREATE VIEW [DT].[vwGetCountHistory]
AS

    SELECT     
        C.Acct, C.TCount, C.TDate, C.PostDate
        , C.DayCount, C.AggCount, C.AggNumber
    FROM DT.CountTotals C

    UNION

    SELECT     
        AC.Acct, AC.TCount, AC.TDate, AC.PostDate
        , AC.DayCount, AC.AggCount, AC.AggNumber
    FROM ARCHIVE.DTA.CountTotals AC
所有这些都很好。该表总共有30万条记录,每天大约有5000条新记录添加到记录中,而PostDate是记录添加的日期。我的问题来自字段DayCount-该字段在表中的每一天都增加1,直到
PostDate is < GetDate()-90
。我的问题是在以下查询中:
SELECT     
        Acct
        , SUM(AggCount) AS SumofAggCount

    FROM DT.vwGetCountHistory
    WHERE (DayCount <= 5)
        AND 
        (
            PostDate >= @BusinessDate - 90
            AND PostDate <= @BusinessDate
        )
    GROUP BY Acct
    HAVING (SUM(AggCount) >= 4)
如果我要搜索当前日期,则此查询效果很好,因为DayCount正确。但是愚蠢的我忘记了他们可以搜索前几天的数据,因此自PostDate以来,我的DayCount每天都会增加。 我正在寻找有关如何解决此问题的建议。有没有办法确定正确的日计数?     
已邀请:
除了可以存储和管理DayCount之外,您还可以计算查询中@BusinessDate和PostDate之间的天数吗?     
我通常同意@ n8wrl,DayCount极有可能不应该被存储并且应该即时计算,但是如果这不是一种选择,那么至少要使其成为计算列,其中PostDate和GETDATE之间是DATEDIFF ()并摆脱该夜间程序。当然,实际上仍然可以实时处理它,但考虑到每晚工作不运行或两次运行的潜在风险,我认为性能下降不会很糟糕。 现在,出于眼前的需要,您是否可以使DayCount测试更加动态,例如:
WHERE (DayCount <= (5 + DATEDIFF(DAY, @BusinessDate, PostDate)))
为此,我们将1加到条件上,以便DayCount <= 6,因为昨天的合格记录现在的DayCount为6。     

要回复问题请先登录注册