存储过程要实现以下功能:
INSERT INTO C
(C.1 C.2 C.3)
(SELECT A.1 A.2 A.3 FROM A,B,D WHERE A.1=B.1 AND A.2=B.2 AND A.1>=(SELECT D.1 FROM D WHERE D.2=A.2))
请问该如何实现?

解决方案 »

  1.   

    错了,直接这样即可.
    INSERT INTO C
    (C.1 C.2 C.3)
    (SELECT A.1 A.2 A.3 FROM A,B,D WHERE A.1=B.1 AND A.2=B.2 AND D.2=A.2 and A.1>= D.1)
      

  2.   

    上面只是个简单的例子,可能没有完全表达出我的意思,实际应用中SELECT内的语句比上面的例子要复杂很多,其实是想要达到A.1>SELECT X.1...这样的效果!不知道有没有办法!还望详细说明,谢谢!
      

  3.   

    那就如那样用子查询.你最好:最好给出完整的表结构,测试数据,计算方法和正确结果.发帖注意事项
    http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
      

  4.   

    表A,包含以下字段
    UserName nvarchar
    Event_Time datetime
    AreaCode nvarchar表B,包含以下字段
    InfoName nvarchar表C,包含以下字段
    InfoName nvarchar
    BeginCode nvarchar --对应表A中的AreaCode
    EndCode nvarchar --对应表A中的AreaCode
    TimeDiff int --时间差表A的数据会不断增加,并且同样AreaCode的记录会重复出现,表A中的任意两条数据(A1和A2)和表C中的C1,能够满足A1.AreaCode=C1.BeginCode且A2.AreaCode=C1.EndCode且DateDiff(ss,A1.最近一次的Event_Time,A2.最近一次的Event_Time)>=60 则将C1.InfoName写入B中
      

  5.   

    insert into B
    select InfoName from C,
    (select * from A m where not exists(select 1 from A n where m.AreaCode=n.AreaCode and n.Event_Time>m.Event_Time)) A1,
    (select * from A m where not exists(select 1 from A n where m.AreaCode=n.AreaCode and  n.Event_Time>m.Event_Time)) A2
    where C.BeginCode=A1.AreaCode
    and C.EndCode=A2.AreaCode
    and DateDiff(ss,A1.Event_Time,A2.Event_Time)>=60