SQL Server 2008 While Loop & Union数据集

0 人关注

我已经能够成功地在一个计算查询中进行循环,但我希望所有的数据都能填充到一个数据集中,而不是多个数据集。我似乎找不到在循环中添加某种UNION ALL的方法(似乎与While Loop不兼容)。 在这个循环计算中,我的目标是得到一年中每一天的年初至今的总数(例如:1/1/2014-1/2/2014,1/1/2014-1/3/2014...一直到现在的1/1/2014-9/15/2014)。循环似乎是实现这一目标的唯一途径,而不需要在查询中设置365个计算块(一年中的每一天都有一个)。

DECLARE @Lcounter INT
SET @Lcounter = 0
WHILE (@StartDte + @Lcounter < GetDate ( ))
BEGIN
    SELECT 
        YEAR(ACD.WorkDte) as WorkDte, 
        @StartDte + @Lcounter as RptType, 
        'Month' as RptLvl,
        ACD.LOB, 'NULL' as CIB, 'NULL' as SwitchNbr, 
        'NULL' as SkillNbr,  
        (SUM(ACD.ACDCallTotCt) + SUM(ACD.AbandonCallTotCt) - SUM(ACD.AbandonCall1Ct) )as CallsRcvd, 
        SUM(ACD.ACDCallTotCt) as CallsAnswrd
        #FinalResults ACD 
    WHERE 
        ACD.WorkDte >= @StartDte 
        AND ACD.WorkDte <= @StartDte + @Lcounter
    GROUP BY 
        Year(ACD.WorkDte), ACD.LOB
    SET @Lcounter = @Lcounter + 1
    
1 个评论
你应该完全可以不使用循环来写,但我需要更多关于数据和模式的信息来提供一个例子。在没有这些信息的情况下,你所拥有的东西是令人困惑的:例如,为一个日计数器使用 "RptType "这个名字,特别是当 "月 "被设置为级别时。
sql
sql-server-2008
while-loop
union-all
wlfente
wlfente
发布于 2014-09-17
1 个回答
Joel Coehoorn
Joel Coehoorn
发布于 2014-09-17
0 人赞同