如果一个字段为NULL值,则更改行值

时间:2018-09-20 12:46:52

标签: sql sql-server

我想将woonplaats中的空值更改为:“ totalal van deze regio”,当在woonplaats中填充空值时,maand中的NULL值应该相同。但是当woonplaats被填充时,只有maand中的值是NULL。则maand中的值必须为:“ de totale omzet van deze woonplaats

我有一个看起来像这样的表: enter image description here

这是我的查询

select v.regiocode, woonplaats, month(besteldatum) as maand, 
       '€ ' + cast(sum(prijs*aantal) as varchar) as omzet
from   klant k
  join verkoopregio v
    on left(k.postcodehuisnr,4) between v.pcbegin and v.pceinde
  join bestelling be
    on k.klantnr = be.klantnr
  join bestelregel br
    on be.bestelnr = br.bestelnr
  left join artikelprijs ap
    on br.artikelnr = ap.artikelnr
    and year(be.besteldatum) = 2014 
    and be.besteldatum between ap.begindatum and ap.einddatum
  group by v.regiocode,woonplaats, month(besteldatum)
  with rollup

查询结果:
enter image description here

3 个答案:

答案 0 :(得分:1)

使用UPDATE命令:

update name-of-table
   set maand='some value' 
 where woonplaats = 'totaal van deze regio'

答案 1 :(得分:1)

您需要在符合条件的情况下更新表名 设置maand =您的值 条件在哪里

update tablename
set maand='desired value'
where woonplaats= 'totaal van deze regio'

答案 2 :(得分:0)

根据我的理解,您想要执行以下操作:

如果woonplaats为null,则应将其更新为totaal van deze regio,但是,如果woonplaats具有值,则应将其更新为具有相同值的Maand,而Maand应为Null。

此处提供了一种建议的解决方案,但是,如果您的Maand字段是整数,则它将不起作用。然后,我需要您向我提供桌子上的更多详细信息,等等。

select v.regiocode, isnull(woonplaats,'totaal van deze regio'), isnull(month(besteldatum),woonplaats) as maand, 
       '€ ' + cast(sum(prijs*aantal) as varchar) as omzet
from   klant k
  join verkoopregio v
    on left(k.postcodehuisnr,4) between v.pcbegin and v.pceinde
  join bestelling be
    on k.klantnr = be.klantnr
  join bestelregel br
    on be.bestelnr = br.bestelnr
  left join artikelprijs ap
    on br.artikelnr = ap.artikelnr
    and year(be.besteldatum) = 2014 
    and be.besteldatum between ap.begindatum and ap.einddatum
  group by v.regiocode,woonplaats, month(besteldatum)
  with rollup

上面是选择查询,但是,如果要更新这些值,请告知是否要我为您提供更新查询?