如何插入带验证的记录

时间:2011-11-03 05:22:30

标签: sql sql-server

使用SQL Server 2000

主表

ID Date Value

001 23-04-2009 200
001 24-04-2009 300
002 23-04-2009 250
002 24-04-2009 350
002 25-04-2009 250
....

中学表

ID Date Value

    001 23-04-2009 200
    001 24-04-2009 300
    002 23-04-2009 250
    002 24-04-2009 350
    002 25-04-2009 250
    002 26-04-2009 550
    ....

在主表中,我想从辅助表中插入数据(每个数据应该从下一个日期开始为每个ID插入)

如果我将辅助表数据插入到主表中,主表应该从下一个日期起接受id ...

预期输出

ID Date Value

001 23-04-2009 200 'old record from master table
001 24-04-2009 300 'old record from master table
002 23-04-2009 250 'old record from master table
002 24-04-2009 350 'old record from master table
002 25-04-2009 250 'old record from master table
002 26-04-2009 550 'New Record from Secondary Table

下面提到的记录未插入主表中,因为日期可用于主表中的id

    001 23-04-2009 200
    001 24-04-2009 300
    002 23-04-2009 250
    002 24-04-2009 350
    002 25-04-2009 250

如何进行查询以插入带有验证的记录(id和日期)。

需要SQL查询帮助

1 个答案:

答案 0 :(得分:-1)

select s.*
from 
(select id, date, value
from secondaryTable ) s ,

(
select id, max(date) as date 
from mainTable
group by id ) a

where s.id = a.id and s.date>a.date

这个查询应该返回应该插入主表的所需行,我还没有测试过查询,请原谅任何错误