如何动态的统计一张表(table1)的数据到另一张表(table2),被统计的表是随时更新的,我用的是insert into table2()select count(cloum) from table1。但是这样有一个问题就是当我table1的表随着时间的增长后数据也变化了,这样我之前统计的数据在我的sql语句再一次执行后重复统计了,怎样来不重复统计之前统计过的数据?十万火急,,,,已经研究好几天了,但是因缺乏经验,一直无法解决!!特请高手指教。
insert into countArea (userID,clickDate,clickArea,areaCount,AreaID)
select UserID,convert(varchar(10),clickDate,120)as clickDate,AreaName,count(AreaID),areaID as CountMediaClass
from Z_click_list
group by UserID,convert(varchar(10),clickDate,120),AreaID,AreaName
//////
这是我的sql 语句,随着我的clickdate的变化,当insert into语句 自动执行后之前统计过的数据再一次被插入到countarea表里去了!

解决方案 »

  1.   

    如果table1变化很快,并且统计时间稍微有点长的话,不但统计重复还会出现统计不准确的问题, 建议你,
    1,将某次统计中table1的主健 取出放到一个批量统计的控制表中,标示统计的第几次,防止以后重复统计(当然了,此次主健选取肯定不应该在这个表内,在了就说明以前统计过了)
    2,根据刚才那个表中第几次的主健范围再进行统计,就没有问题了,既不会保证统计重复,又不会出现统计不准确的问题,不知道lz明白我的意思不?
    呵呵  我也是理想状况阿
      

  2.   

    你的意思是统计一次就往countArea 加一条记录吧?
    把每次统计的id(主键)放到另一个表(T),下次统计时,T表存在的就不统计了。
      

  3.   

    insert into countArea (userID,clickDate,clickArea,areaCount,AreaID)
    select UserID,convert(varchar(10),clickDate,120)as clickDate,AreaName,count(AreaID),areaID as CountMediaClass
    from Z_click_list
    group by UserID,convert(varchar(10),clickDate,120),AreaID,AreaName从Z_click_list表里统计数据然后插入countArea。要是有以前统计过的就不再进行统计且不再写入表countarea。
      

  4.   

    insert into countArea (userID,clickDate,clickArea,areaCount,AreaID)
    select UserID,convert(varchar(10),clickDate,120)as clickDate,AreaName,count(AreaID),areaID as CountMediaClass
    from Z_click_list
    group by UserID,convert(varchar(10),clickDate,120),AreaID,AreaName
    这根本没用到ID,能否有其他的方法,把每次统计的id(主键)放到另一个表(T)这样又多了一张表,可能更麻烦了。