[postgis-users] Using CASE

Bob Pawley rjpawley at shaw.ca
Thu Feb 4 14:40:04 PST 2010


OK thanks.

It appears that my original was missing end.

Bob


----- Original Message ----- 
From: "Stephen Woodbridge" <woodbri at swoodbridge.com>
To: "PostGIS Users Discussion" <postgis-users at postgis.refractions.net>
Sent: Thursday, February 04, 2010 2:28 PM
Subject: Re: [postgis-users] Using CASE


> Bob,
>
> First thing it would really help us, and probably use if you indented you 
> sql code so it is more readable:
>
> Update p_id.image set the_geom =
>   ( select st_translate(library.dgm_device.the_geom,
>       st_x(st_centroid(p_id.p_id.othe_geom))  -
>         st_x(st_centroid(library.dgm_device.ithe_geom)) ,
>       st_y(st_centroid(p_id.p_id.othe_geom)) -
>        (
>          Select Case     --<<-- this is NOT a valid select!
>            when p_id.devices.status = 'Pump #1'
>                 and p_id.devices.devices_id = '3614'
>            then - 10000  --<<-- what is "then - 1000"
>        ) - st_y(st_centroid(library.dgm_device.the_geom)))
> from p_id.p_id, library.dgm_device, p_id.processes, processes_count, 
> p_id.devices
> where library.dgm_device.description = 'In Line Pump'
> and library.dgm_device.orientation = ta_orientation
> and p_id.p_id.p_id_id = processes_count.p_id_id
> and p_id.p_id.process_id = p_id.processes.process_id
> and p_id.devices.devices_id = '3614'
> and  p_id.processes.fluid_id = p_id.devices.fluid_id)
> from p_id.devices
> where p_id.image.fluid_id = p_id.devices.fluid_id
> and p_id.devices.devices_id = '3614'
> and p_id.image.text_ = 'Pump #1'
> and p_id.image.device_id = '3614';
>
> the syntax is
> CASE
>   WHEN expression THEN expression
>   [[WHEN expression THEN expression] ...]
>   [ELSE expression]
> END
>
> Bob Pawley wrote:
>> I've tried -
>>
>> Update p_id.image
>> set the_geom =
>> (select st_translate(library.dgm_device.the_geom,
>> st_x (st_centroid(p_id.p_id.othe_geom))  -
>> st_x (st_centroid(library.dgm_device.ithe_geom)) ,
>> st_y (st_centroid(p_id.p_id.othe_geom)) - (Select Case when 
>> p_id.devices.status = 'Pump #1'
>> and p_id.devices.devices_id = '3614'
>> then - 10000) -
>> st_y (st_centroid(library.dgm_device.the_geom)))
>> from p_id.p_id, library.dgm_device, p_id.processes, processes_count, 
>> p_id.devices
>> where library.dgm_device.description = 'In Line Pump'
>> and library.dgm_device.orientation = ta_orientation
>> and p_id.p_id.p_id_id = processes_count.p_id_id
>> and p_id.p_id.process_id = p_id.processes.process_id
>> and p_id.devices.devices_id = '3614'
>> and  p_id.processes.fluid_id = p_id.devices.fluid_id)
>> from p_id.devices
>> where p_id.image.fluid_id = p_id.devices.fluid_id
>> and p_id.devices.devices_id = '3614'
>> and p_id.image.text_ = 'Pump #1'
>> and p_id.image.device_id = '3614';
>>
>> and get ERROR:  syntax error at or near ")"
>> LINE 16:  then - 10000)
>>
>> Bob
>> ----- Original Message ----- From: "Stephen Woodbridge" 
>> <woodbri at swoodbridge.com>
>> To: "PostGIS Users Discussion" <postgis-users at postgis.refractions.net>
>> Sent: Thursday, February 04, 2010 2:13 PM
>> Subject: Re: [postgis-users] Using CASE
>>
>>
>>> Bob,
>>>
>>> You sub-select need to be enclosed in parens like:
>>>
>>>  ... - (select case ...) ...
>>>
>>> -Steve
>>>
>>> Bob Pawley wrote:
>>>> Hi
>>>>  I've been attempting to use CASE to establish the spatial point in the 
>>>> following expression.
>>>>  Update p_id.image
>>>>  set the_geom =  (select st_translate(library.dgm_device.the_geom, st_x 
>>>> (st_centroid(p_id.p_id.othe_geom))  -
>>>>  st_x (st_centroid(library.dgm_device.ithe_geom)) ,
>>>>  st_y (st_centroid(p_id.p_id.othe_geom)) - Select Case when 
>>>> p_id.devices.status = 'Pump #1'
>>>>  and p_id.devices.devices_id = '3614'
>>>>  then - 10000 -
>>>>  st_y (st_centroid(library.dgm_device.the_geom)))
>>>>  from p_id.p_id, library.dgm_device, p_id.processes, processes_count, 
>>>> p_id.devices where library.dgm_device.description = 'In Line Pump'
>>>>  and library.dgm_device.orientation = ta_orientation
>>>>  and p_id.p_id.p_id_id = processes_count.p_id_id
>>>>  and p_id.p_id.process_id = p_id.processes.process_id
>>>>  and p_id.devices.devices_id = '3614'
>>>>  and  p_id.processes.fluid_id = p_id.devices.fluid_id) from 
>>>> p_id.devices
>>>>  where p_id.image.fluid_id = p_id.devices.fluid_id
>>>>  and p_id.devices.devices_id = '3614'
>>>>  and p_id.image.text_ = 'Pump #1'
>>>>  and p_id.image.device_id = '3614';
>>>>  I get - "ERROR:  syntax error at or near "Select"
>>>> LINE 14:  st_y (st_centroid(p_id.p_id.othe_geom)"
>>>>  Any help would be appreciated.
>>>>  Bob
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>> _______________________________________________
>>>> postgis-users mailing list
>>>> postgis-users at postgis.refractions.net
>>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>
>>> _______________________________________________
>>> postgis-users mailing list
>>> postgis-users at postgis.refractions.net
>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
> _______________________________________________
> 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