从两个表值更新sql查询

时间:2012-07-09 18:50:52

标签: sql sql-server tsql sql-server-2005

我有2个表,其值存储如下。

表1

ReferranceID   StatusNumber   ServiceType            T2OpenDt          T1OpenDT
162987          399519        Orthopaedic Surgery       NULL           2011-08-19 
162987          399525        Acupuncture               NULL           2011-08-19 
162987          413405        Anesthesiology            NULL           2011-09-28 
162987          517174        Chiropractic              NULL           2012-04-26

表2

ReferranceID StatusNumber   Status     T2OpenDate
162987       256033         Closed     2010-11-17 
162987       488518         ReOpen     2012-02-22 

第一个表应该从第二个表中更新如下。 (即结果值)

ReferranceID   StatusNumber   ServiceType               T2OpenDt          T1OpenDT
162987          399519        Orthopaedic Surgery       2010-11-17         2011-08-19 
162987          399525        Acupuncture               2010-11-17         2011-08-19 
162987          413405        Anesthesiology            2010-11-17         2011-09-28 
162987          517174        Chiropractic              2012-02-22         2012-04-26 
由于T2OpenDate小于T1Opendate,

'2010-11-17'将在 3行中更新 只有一次出现 2012-02-22 ,因为此日期略高于其他3个顶级T1OpenDate且少于第4个T1OpenDate。

有人可以建议我上面的UPDATE sqlquery。非常感谢你帮助我。

1 个答案:

答案 0 :(得分:0)

UPDATE Table1
    SET T2OpenDate = (SELECT MAX(Table2.T2OpenDate)
                      FROM Table2 
                      WHERE Table2.T2OpenDate < Table1.T1OpenDate)                       
FROM Table1

EDITED 根据Aaron Bertrand的通讯录。

如果你想在这项特殊技能上取得更好的成绩,我建议你阅读:How do I UPDATE from a SELECT in SQL Server?