使用不同的值更新多行 - THEN语句

时间:2016-04-13 21:58:27

标签: sql sql-server-2008

我正在努力解决SQL查询问题。我们有一些地址错误的START日期,但CREATE日期是正确的。

目标是更新大约4000条记录而不是一条一条地记录。我知道我可以根据Person_ID做到这一点,但这将是非常耗时的。问题在于Then语句,因为我必须选择一个在同一行的值,所以我可能需要首先声明一个值,但我不确定如何适应它?

update ADDRESS
set START_DATE = CASE
   when STATUS = 'Inactive' and START_DATE = '1900-01-01'
   then (select CREATE_DATE from ADDRESS where STATUS = 'Inactive' and START_DATE = '1900-01-01')
   else END_DATE end
where STATUS = 'Inactive' and START_DATE = '1900-01-01' and PEOPLE_ID IN (select PEOPLE_ID from ADDRESS where START_DATE = '1900-01-01' and STATUS = 'Inactive')

我意识到某些行的语句可能是多余的。 PEOPLE_ID应该以某种方式适合THEN Statement的Select Statement吧?

1 个答案:

答案 0 :(得分:2)

UPDATE  address
SET     start_date = create_date
WHERE   status = 'inactive'
        AND start_date = '1900-01-01'