我正在努力解决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吧?
答案 0 :(得分:2)
UPDATE address
SET start_date = create_date
WHERE status = 'inactive'
AND start_date = '1900-01-01'