T-SQL查找多个日期范围中的日期

时间:2017-01-04 16:12:07

标签: sql-server

我需要三个表来获取信息。一个表有一个我需要插入另一个表的代码。第三张表将这些联系在一起。

表一具有人员ID号,会话号,交易日期和代码。此表中的某些代码为空白,因此需要进行更新。

表2与表1具有相同的信息,并带有额外的PaymentType字段。

表3与表1具有相同的数据,其中包含PaymentType号,日期和代码,以更新到表1,其中代码为空。

表一中的TransactionDate需要匹配日期或表三中的日期范围。

如果表3中的日期是2015-05-03,2015-05-14和2015-05-30,如何在这两个范围内找到具体日期?如果表1中的日期是2015-05-10,我需要找到它所在的日期范围,以便我可以使用正确的代码更新表格。

CREATE TABLE TableThree (
   PersonNumber      VARCHAR(8) NOT NULL
  ,SessionNumber     VARCHAR(3) NOT NULL
  ,transaction_Dates DATE  NOT NULL
  ,Code              VARCHAR(3) NOT NULL
);

INSERT INTO 
    TableThree (PersonNumber, SessionNumber, transaction_Dates, Code) 
VALUES 
    ('ABC03854','590','2015-12-21','AAA')
    ,('ABC03862','591','2015-12-10','AAA')
    ,('ABC03862','591','2015-12-21','BBB')
    ,('ABC03893','595','2015-12-02','FFF')
    ,('ABC03893','595','2015-12-30','AAA')
    ,('ABC03970','597','2015-12-21','MMM')
    ,('ABC03976','598','2015-12-10','FFF')
    ,('ABC08931','519','2015-12-10','FFF')
    ,('ABC08931','519','2015-12-21','AAA')
    ,('ABC08931','519','2015-12-30','MMM');

CREATE TABLE mytable (
   PersonNumber     VARCHAR(8) NOT NULL
  ,SessionNumber    INTEGER  NOT NULL
  ,transaction_date VARCHAR(24) NOT NULL
  ,CODE             VARCHAR(5) NOT NULL
);

INSERT INTO 
    mytable (PersonNumber,SessionNumber,transaction_date,CODE) 
VALUES 
    ('ABC03854',590,'2014-12-23 00:00:00.000',NULL)
    ,('ABC03862',591,'2014-12-16 00:00:00.000',NULL)
    ,('ABC03893',595,'2014-12-16 00:00:00.000',NULL)
    ,('ABC08931',519,'2015-12-22 00:00:00.000',NULL);

0 个答案:

没有答案