我有两列measurement_unit
和measurement_size
。measurement_unit
列中的值为ml,gm,litre
。measurement_size
的值为200,1300,2000
我已将measurement_size
的所有值转换为.2,1.3,2
的圆形图,现在我想将measurement_unit
的值更改为liter
或kg
,这是我的案例表达。但它不工作......我应该怎么做?另外它不是更新查询我正在为我的报告做这个..它不会改变数据库中的任何值..
CASE WHEN MUC.name='ml' THEN (MUC.name)='Liter'
WHEN MUC.name='gm' THEN (MUC.name)='Kg'
END AS Measurement,
答案 0 :(得分:1)
一种可能性是在CASE WHEN
语句中使用UPDATE
:
UPDATE MUC
SET MUC.name = CASE
WHEN MUC.name = 'ml' THEN 'Liter';
WHEN MUC.name = 'gm' THEN 'Kg';
ELSE MUC.name
END
我唯一不喜欢这个解决方案的是它仍然会使用当前值更新不匹配的行。如果您真的只想更新要转换的行,那么您可以尝试使用两个UPDATE
语句,包含在事务中:
START TRANSACTION
UPDATE MUC
SET MUC.name = 'Liter' WHERE MUC.name = 'ml'
UPDATE MUC
SET MUC.name = 'Kg' WHERE MUC.name = 'gm'
COMMIT
如果您想确保没有人看到您的单位处于中间状态,则可能需要进行交易。
答案 1 :(得分:1)
你可以试试这个。
select
CASE WHEN M_unit='ml' THEN 'Liter'
WHEN M_unit.name='gm' THEN 'Kg'
ELSE M_UNIT
END AS Measurement_UNIT,
M_size/1000 as Measurement_SIZE
from Table