我在SQL Server数据库中有这个表(只是表的一个片段,它只显示ID = 290的行):
ID_Mov |TypeRow|CodeArticle | Description | Price
-----------------------------------------------------------------------
290 | 1 | 00311-CC71671 | Aprilia | 100,00
290 | 8 | | this row contain only note | 0,00
290 | 1 | APRSV1408-013SU | Air Box | 0,00
290 | 1 | APRSV1408-018SU | Ammortizzatore | 0,00
290 | 1 | APRSV1408-1237U | Antenna | 0,00
我想将typerow 8之后的行的价格设置为50,并将typerow 8之前的行设置为0。
所以结果必须是:
290 |1 |00311-CC71671 |Aprilia |0,00
290 |8 | |this row contain only note|0,00
290 |1 |APRSV1408-013SU|Air Box |50,00
290 |1 |APRSV1408-018SU|Ammortizzatore |50,00
290 |1 |APRSV1408-1237U|Antenna |50,00
答案 0 :(得分:0)
我假设你的问题不会通过这种方法解决,但是: -
update this_table set price=50
where id_mov=290 and type_row=1 and price=0
update this_table set price=0
where id_mov=290 and type_row=1 and price=100
将产生您要求的结果。
如果您解释了50的新价格是如何得出的,那么可以建议一个更通用的解决方案来处理表中的其他行。
这是一次通过: -
update this_table set price=case price when 0 then 50 when 100 then 0 end
where id_mov=290 and type_row=1