I need to update the column (vendor_type) in the table depending on values in other columns.
Table name = “vendor”
Columns = “client_id”(varchar), “coach_id”(varchar), “exm_vendor”(boolean), “vendor_type”(varchar)
And this is what I want to do with postgresql:
x
if (client_id != null)
vendor_type = INTERNAL
else if (coach_id != null)
vendor_type = VENDOR_COACH
else if (exm_vendor == true)
vendor_type = EXM
else
vendor_type = EXTERNAL
Advertisement
Answer
Postgresql supports a number of ways to express conditional values, but perhaps the closest to your example is the CASE..WHEN
expression
https://www.postgresql.org/docs/14/functions-conditional.html
you can put this into an update statement like this
UPDATE vendor
SET vendor_type = ( CASE
WHEN client_id IS NOT NULL
THEN 'INTERNAL'
WHEN coach_id IS NOT NULL
THEN 'VENDOR_COACH'
WHEN exm_vendor
THEN 'EXM'
ELSE
'EXTERNAL'
END ) ;