Sunday, 15 September 2013

postgresql - SQL: conditional SELECT -



postgresql - SQL: conditional SELECT -

i utilize next sql query receive entries older payment_target days.

select * orders where(extract(epoch age(current_date, date_trunc('day', orders.created_at))) - orders.payment_target*86400 >= 0)

however, want modify query in way orders.invcoice_sent_at used calculation basis if not null. otherwise, `orders.created_at' should used.

i tried next query guess more pseudo code valid sql. don't know how can set attribute used in statement block.

select * orders (extract(epoch age(current_date, date_trunc('day', if orders.invoice_sent_at not null begin orders.invoice_sent_at end else begin orders.created_at end ))) - orders.payment_target*86400 >= 0)

instead of if can utilize coalesce work on every database supporting ansi sql:

coalesce( orders.invoice_sent_at, orders.created_at) - orders.payment_target*86400 >= 0)

sql postgresql

No comments:

Post a Comment