--首先做初始化(在定时处理之前)insert 日志表(log_day,classid,DZusers,QXusers)
select log_day=isnull(b.startDT,c.cancelDT)
,a.classID
,DZusers=isnull(b.DZusers,0)
,QXusers=isnull(c.QXusers,0)
from 类别表 a
left join(
select classID,startDT,DZusers=count(*)
from 明细表
group by classID,startDT
)b on a.classID=b.classID
left join(
select classID,cancelDT,QXusers=count(*)
from 明细表
group by classID,cancelDT
)c on a.classID=c.classID
and b.startDT=c.cancelDT

解决方案 »

  1.   

    --然后,再创建定时进行数据处理的作业,实现
    --以后每天的23:59:59执行一个过程:把当天的各栏目的统计数据加到日志表里--设置 SQL Agent 服务为自动启动
    exec msdb..sp_set_sqlagent_properties @auto_start=1
    go--创建作业
    exec msdb..sp_add_job @job_name='数据处理'--创建作业步骤
    declare @sql varchar(800),@dbname varchar(250)
    select @sql=' --当天的各栏目的统计数据加到日志表里的处理
    declare @dt char(8)
    select @dt=convert(char(8),getdate(),112)insert 日志表(log_day,classid,DZusers,QXusers)
    select log_day=isnull(b.startDT,c.cancelDT)
    ,a.classID
    ,DZusers=isnull(b.DZusers,0)
    ,QXusers=isnull(c.QXusers,0)
    from 类别表 a
    left join(
    select classID,startDT,DZusers=count(*)
    from 明细表
    where startDT=@dt
    group by classID
    )b on a.classID=b.classID
    left join(
    select classID,cancelDT,QXusers=count(*)
    from 明细表
    where cancelDT=@dt
    group by classID,cancelDT
    )c on a.classID=c.classID

    ,@dbname=db_name() --执行数据处理的数据库名exec msdb..sp_add_jobstep @job_name='数据处理',
    @step_name = '数据统计',
    @subsystem = 'TSQL',
    @database_name=@dbname,
    @command = @sql,
    @retry_attempts = 5,  --重试次数
    @retry_interval = 5   --重试间隔--创建调度
    EXEC msdb..sp_add_jobschedule @job_name = '数据处理', 
    @name = '时间安排',
    @freq_type=4,  
    @freq_interval=1,
    @freq_subday_type=0,
    @freq_subday_interval=1, 
    @freq_recurrence_factor=0,
    @active_start_time = 235959  --每天23:59:59执行 -- 添加目标服务器
    EXEC msdb.dbo.sp_add_jobserver 
    @job_name = '数据处理' ,
    @server_name = N'(local)' 
      

  2.   

    搞定了。感谢zjcxc(邹建)邹大侠的指导。