I am trying to update a table named qc
only when first.value
is equal to second.value
.
An UPDATE
query without FROM
updates every value which is not what I want. I tried this, but it's still not working:
UPDATE qc
SET value =
CASE
WHEN value < 125 THEN
CASE WHEN material LIKE 'Beton%'
THEN 40
ELSE
(CAST(value - 40 AS DECIMAL(5,2)))
END
WHEN value >= 125 AND value <= 150 THEN
CASE WHEN material LIKE 'Beton%'
THEN 50
ELSE
(CAST(value - 50 AS DECIMAL(5,2)))
END
ELSE
CASE WHEN material LIKE 'Beton%'
THEN 80
ELSE
(CAST(value - 80 AS DECIMAL(5,2)))
END
END
FROM (SELECT location, value
FROM qc
LEFT JOIN designlocation dl ON qc.designlocationid = dl.designlocationid
WHERE material LIKE 'Beton_v%' AND value != '') first
, (SELECT location, value
FROM qc
LEFT JOIN designlocation dl ON qc.designlocationid = dl.designlocationid
WHERE material LIKE '%(3rd pass)%' AND value !='') second
WHERE first.location = second.location AND first.value = second.value;