根据条件更新某列的很多行sql
需求:需要将下面单位列dose_unit_rx的列中单位为mg的dose_val_rx值换算成单位为g的:
利用case when 语句
SELECT
CAST( pr.dose_val_rx AS DECIMAL(10,2)) AS dose_val_rx
--dose_unit_rx 有g,gm,mg三种单位,这里单位为mg的换算成g的
, CASE WHEN dose_unit_rx='mg'
THEN round(CAST( pr.dose_val_rx AS DECIMAL(10,2))/1000,2)
ELSE CAST( pr.dose_val_rx AS DECIMAL(10,2)) end AS doses
这里新增了一列doses就是所需要的更新列,因为原表中dose_val_rx是varchar类型,所以这里需要利用cast函数转化成小数,最后保留两位小数利用了round函数。
结果如下: