我需要为给定的X,MONTH和YEAR值更新STATUS ='R' 和STATUS ='C'表示前一年的所有内容。
(我使用变量而不是X,MONTH和YEAR的硬编码值,下面的语句只是我正在尝试的一个例子)
update A set STATUS = 'R'
where X =1
and MONTH = 7
and YEAR = 2011;
update A set STATUS = 'C'
where X = 1
and MONTH < 7
and YEAR <= 2011
and YEAR >= 2011 - 1;
输出就像(输出错误):
....X YEAR MONTH STATUS
....1 2010 1 C
....1 2010 2 C
....1 2010 3 C
....1 2010 4 C
....1 2010 5 C
....1 2010 6 C
....1 2010 7 R //Actually this shoud be updated to C
....1 2010 8 R //Actually this shoud be updated to C
....1 2010 9 R //Actually this shoud be updated to C
....1 2010 10 R //Actually this shoud be updated to C
....1 2010 11 R //Actually this shoud be updated to C
....1 2010 12 R //Actually this shoud be updated to C
....1 2011 1 C
....1 2011 2 C
....1 2011 3 C
....1 2011 4 C
....1 2011 5 C
....1 2011 6 C
....1 2011 7 R
现在我们可以看到第一个更新查询工作正常。 现在我期待将以上所有内容更改为STATUS ='C' 但它不适用于2010年的第7至12个月。
请建议。
Oracle 9i Enterprise Edition release 9.2.8.0 - 64 bit Production
答案 0 :(得分:0)
在您的第二次更新中,您只将其设置为MONTH&lt; 7,所以它更大的地方没有做任何事情
答案 1 :(得分:0)
update A set STATUS = 'R'
where X =1
and MONTH = 7
and YEAR = 2011;
update A set STATUS = 'C'
where X = 1
and YEAR = 2011
and MONTH < 7
update A set STATUS = 'C'
where X = 1
and YEAR = 2011 - 1;
这是有效的