Saturday, 15 May 2010

sql - Return different value if certain condition is true -



sql - Return different value if certain condition is true -

i have query:

select last_ddns_update_time lu_camera cam cam.unit_id='90016980' , cam.device_id='2051' , cam.device_id not in ( select device_id lu_camera_ext unit_id=cam.unit_id , device_id=cam.device_id)

it returns 1 variable (from cell). possible homecoming 2 variables (one cell , 1 set within query itself)?

i want if part true:

(select device_id lu_camera_ext unit_id=cam.unit_id , device_id=cam.device_id)

then homecoming value else homecoming value b (select last_ddns_update_time, new_value). i'm relatively new sql, i'm sorry if mega scrub question.

something kind of like:

select last_ddns_update_time, new_value lu_camera cam cam.unit_id='90016980' , cam.device_id='2051' , cam.device_id , if (select device_id lu_camera_ext unit_id=cam.unit_id , device_id=cam.device_id) set new_value='a' else set new_value='b'

you cannot grab info in select tables in clause. not have access them. however, changing query little bit, can asking. instead of having sub-select in clause, let's move select part of query (what?!). that's right, can have sub-select in select.

since checking if cam.device_id in sub-select, going assume want 'new_value' if id in select, otherwise want last_ddns_update_time. looks this:

select isnull((select new_value lu_camera_ext unit_id=cam.unit_id , device_id=cam.device_id , cam.device_id = device_id) , last_ddns_update_time) lu_camera cam cam.unit_id='90016980' , cam.device_id='2051'

so happening is, looking new value lu_camera_ext if cam.device_id in table. if device_id not returned sub-select, instead null returned. isnull evaluates returned value. if null back, instead last_ddns_update_time returned per usual.

sql sql-server-2008

No comments:

Post a Comment