[postgis-users] postgres case(conditional)statement problem

Nicklas Avén nicklas.aven at jordogskog.no
Sat Dec 4 09:11:46 PST 2010


Hallo

I think what you want to do is something like:

SELECT price,
CASE WHEN 200<selling1.price AND selling1.price <300 THEN '400'
ELSE price
END
FROM selling1
WHERE selling1.item = '1';


The case expression is used in the SELECT-statement
see the doc: http://www.postgresql.org/docs/9.0/interactive/functions-conditional.html#AEN15488


I guess you can just put the case expression in the update-query the same way,
but if there is just one case where you want to change the value, the update query could look just like this:

UPDATE selling1 set price='400'
WHERE price>200 and price < 300;

HTH
Nicklas



On Sat, 2010-12-04 at 07:45 -0500, zhang zhe wrote:
> Hello,
> 
> Does anyone familiar with postgres case statement. 
> 
> I have a tale called selling1.sql, inside table there are two columns
> item(1,1,2,3,3,3,4,4,4....)  and price(234, 243, 245, 342, 124, 245,
> 343, 123,455.....). I want to select the price where item id is equal
> to 1, and if its price is bigger than 200 and smaller than 300, the
> price will be changed into 400 . so in this case, price column value
> will be changed into,  price(400,400, 245,342,124, 245, 343, 123,
> 455...)
> 
> My sql statement is like this
> 
> select price from selling1 where selling1.item = '1',
>  case when 200<selling1.price and selling1.price <300 then '400'else
> 'other' END;
> 
> but it always give me the error. It said syntax error in case. 
> 
> Do you known whatś wrong? 
> 
> Thanks
> 
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users





More information about the postgis-users mailing list