Reputation: 13
BEGIN TRAN
UPDATE SubUnitAreas
SET SA.GIA = CASE TEMP.[Rentable SF] WHEN (TEMP.[Useable SF] <= 0 AND TEMP.[Rentable SF] <= 0) THEN TEMP.[Rentable SF] ELSE END,
SA.GIAMeas = 1,
SA.NIA = CASE TEMP.[Useable SF] WHEN (TEMP.[Useable SF] <= 0 AND TEMP.[Rentable SF] <= 0) THEN TEMP.[Useable SF] ELSE END,
SA.NIAMeas = 1
FROM SubUnitAreas SA
INNER JOIN SubUnit SU ON SA.SubUnitKey = SU.SubUnitKey
INNER JOIN TRT_140317_SubUnitAreas TEMP ON TEMP.[LEASE ID] = SU.TenureID
WHERE SA.SubUnitKey = SU.SubUnitKey AND SU.TenureID NOT IN ('DUB008')
ROLLBACK TRAN
Upvotes: 0
Views: 34
Reputation: 13
I just had to give an ELSE <>
BEGIN TRAN UPDATE SA SET SA.GIA = CASE WHEN (TEMP.[Useable SF] <= 0 AND TEMP.[Rentable SF] <= 0) THEN TEMP.[Rentable SF] ELSE SA.GIA END, SA.GIAMeas = 1, SA.NIA = CASE WHEN (TEMP.[Useable SF] <= 0 AND TEMP.[Rentable SF] <= 0) THEN TEMP.[Useable SF] ELSE SA.NIA END, SA.NIAMeas = 1 FROM SubUnitAreas SA INNER JOIN SubUnit SU ON SA.SubUnitKey = SU.SubUnitKey INNER JOIN TRT_140317_SubUnitAreas TEMP ON TEMP.[LEASE ID] = SU.TenureID WHERE SA.SubUnitKey = SU.SubUnitKey AND SU.TenureID NOT IN ('DUB008', 'MT001') ROLLBACK TRAN
Upvotes: 0
Reputation: 10700
Certainly, but you have a syntax error in your code, as you did not supply a value in the ELSE-case. Furthermore, if you want to use a logical expression after every WHEN-keyword, you should not supply a value after the CASE-keyword. If you want to leave a column to its original value, in case none of the conditions are satisfied, just do this:
UPDATE SubUnitAreas SET
SA.GIA = CASE WHEN <<logical expression>> THEN TEMP.[Rentable SF] ELSE SA.GIA END,
SA.GIAMeas = 1,
...
Upvotes: 1