我有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。非常感谢你帮助我。
答案 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?