根据日期范围更新查询

时间:2014-08-07 10:21:34

标签: sql sql-server sql-update

如何在更新查询中添加一个条件,其中它将处理两个条件,即1986年12月31日之前和1986年12月31日之后出生的人?DOB值应该来自表T1。所以它应该像1986年12月31日之前出生的人,履行一项职能,1986年12月31日以后出生的人做其他事。

Update Table 1
Set id= T2.id
from Table 1 T1
Inner Join Table 2 T2
ON T1.Cid = T2.cid
and T1.Name = T2.Name
and T1.DOB = T2.DOB

1 个答案:

答案 0 :(得分:1)

如果您需要根据DOB的值更新不同的字段集,您可以执行以下操作:

Update T1
Set 
t1.id= T2.id,
t1.col2 = case when t1.dob < '1986-12-31' then t1.col2 else t2.col2 end,
t1.col3 = case when t1.dob > '1986-12-31' then t1.col3 else t2.col3 end
--More columns in the same way
from Table1 T1
Inner Join Table2 T2
ON T1.Cid = T2.cid
and T1.Name = T2.Name
and T1.DOB = T2.DOB

我们的想法是,我们使用CASE检查特定行是否对应于1987之前的范围或之后,并相应地更新它。我们可以使用Table2中的值或其他值或表达式来更新它。如果值保持不变,我们只需将else部分中的值设置为列的当前值,例如else t1.col2。使用上述内容,您可以一次性指定要包含在更新中的所有值。

相关问题