有两张表A和B
A表
userid name searchDate        searchNum001    wang 09/10/2007   5
002    yang 09/10/2007   6
................................
B表
userid name Logindate        LoginNum001    wang 09/10/2007   2
002    yang 09/10/2007   3
................................想把A和B的写道C表,但是希望在每天的晚上23:59根据AB表的信息写c表userid name searchDate    searchNum LoginDate LoginNum如何实现?谢谢!

解决方案 »

  1.   

    我能想到的就是写个存储过程,然后在数据库中做个作业进行调用。--创建一个要插入的表
    create table tbl(userid int,name varchar(20),searchdate varchar(20), searchnum int,logindate varchar(20),loginnum int)
    --要查找的表
    create table t(userid int,name varchar(20),searchdate varchar(20), searchnum int)
    insert into t 
    select 001,'wang','09/10/2007',5
    union all select 002,'yang','09/10/2007',6
    create table b(userid int,name varchar(20),logindate varchar(20),loginnum int)
    insert into b
    select 001,'wang','09/10/2007',2
    union all select 002,'yang','09/10/2007',4
    --创建存储过程
    create proc autoproc
    as
    insert into tbl--差异的插入值,只插入当天的
    select a.userid,a.name,a.searchdate,a.searchnum,b.logindate,b.loginnum 
    from t a,b b  where a.userid=b.userid and a.searchdate=b.logindate
    and not exists(select * from tbl where userid=a.userid and searchdate=a.searchdate and logindate=b.logindate )
    go
    --调用存储过程
    exec autoproc
    --查看
    select * from tbl
    --删除
    drop proc autoproc
    drop table tbl,t,b
      

  2.   


    select A.userid,A.name,A.searchDate,A.searchNum,B.Logindate,B.LoginNum into C FROM A
    INNER JOIN B ON A.userid=B.userid
    就是不知道如何在想要的时间段自动的写,触发器也不行,高手看看吧?
      

  3.   

    用sql的作业就可能实现,
    在作业定义好时间,然后把相关的SQL语句写进出就可以自动执行
      

  4.   

    To:wuxinyuzhu 目前就是按照你说的用作业调度吧,就是比较麻烦,记录是累加的,数据在不断的增加,记录用户每天的search数量,好像没有什么好的办法。CREATE PROC Proc_AutoInsertSearch
    ASINSERT UserSearchInfo
     (
    UserID,
    userName,
    LoginNum,
    lastLoginTime,
    TodayDate,
    LastLoginIP,
    TodaySearchNum,
    UserType
    )
    SELECT userid,UserName,LoginNum,lastLoginTime,TodayDate,LastLoginIP,TodaySearchNum,'GTTUSER'
    FROM gttuser G WHERE ISNULL(TodaySearchNum,0)>0 AND datediff(day,TodayDate,getdate())=0
    ---差异的插入值,只插入当天的
    AND not exists(select * from UserSearchInfo where userid=G.userid and TodayDate=G.TodayDate and lastLoginTime=G.lastLoginTime )
    UNION
    SELECT userid,UserName,LoginNum,lastLoginTime,TodayDate,LastLoginIP,TodaySearchNum,'SubAgentUser'
    FROM SubagentUser S WHERE ISNULL(TodaySearchNum,0)>0 AND datediff(day,TodayDate,getdate())=0
    ---差异的插入值,只插入当天的
    AND not exists(select * from UserSearchInfo where userid=S.userid and TodayDate=S.TodayDate and lastLoginTime=S.lastLoginTime )
    GO关注中,有好的方法,大家分享一下!