Sql 更新脚本未按预期工作?

Sql 更新脚本未按预期工作?,sql,sql-update,Sql,Sql Update,我需要更新给定值X、月份和年份的STATUS='R' 在上一年之前的所有事情都是“C” (我使用变量而不是硬编码的X、月和年值,下面的stations只是我尝试的一个示例) 现在,第一个更新查询工作正常,正如我们在上面看到的。 现在我希望将上面的所有内容都更改为class='C' 但它不适用于2010年的7到12个月 请建议。 Oracle 9i Enterprise Edition 9.2.8.0版-64位生产版在您的第二次更新中,您只将其设置为

我需要更新给定值X、月份和年份的STATUS='R' 在上一年之前的所有事情都是“C”

(我使用变量而不是硬编码的X、月和年值,下面的stations只是我尝试的一个示例)

现在,第一个更新查询工作正常,正如我们在上面看到的。 现在我希望将上面的所有内容都更改为class='C' 但它不适用于2010年的7到12个月

请建议。
Oracle 9i Enterprise Edition 9.2.8.0版-64位生产版

在您的第二次更新中,您只将其设置为<7个月,因此如果它的值更大,则它不会执行任何操作

更新集合状态='R'
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;
其中X=1 月份=7 年份=2011年; 更新集合状态='C' 其中X=1 年份=2011年 月<7 更新集合状态='C' 其中X=1 年份=2011-1年;

这是有效的

是的,我理解,但我对此非常陌生……只是学习……不知道如何弥补/更新……也可能是所有这些都可以使用单个更新语句来完成。因此,如果您不想在少于7个月的时间内使用它,请删除where子句的该部分,如果我需要,请将其移动到R状态(对于第一次查询更改的行)将更改回C
....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
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;