On 25 September 2015 at 13:08, Ramesh T <rameshparnanditech@gmail.com> wrote:
> CREATE UNIQUE INDEX idx_load_pick ON pick (case picked when picked='y' then
> load_id else null end );
>
> how can i convert case expressed to postgres..above it is oracle.
Assuming that your queries are written in such a way that Oracle is
indeed using that index and you want your queries to use the index as
well in PG:
CREATE UNIQUE INDEX idx_load_pick ON (load_id) WHERE CASE picked WHEN
'y' THEN load_id ELSE NULL END IS NOT NULL;
That's definitely written a bit redundantly, that's Oracle's fault.
If your queries aren't like that, it's as Ladislav wrote. Much simpler in PG!
To make Oracle use your original index, your queries are probably of a
form containing snippets like:
SELECT *
FROM foo
WHERE CASE picked WHEN 'y' THEN load_id ELSE NULL END IS NOT NULL
BTW, your CASE statement isn't exactly valid, even in Oracle. Your
comparison is in fact this: picked = picked='y'.
--
If you can't see the forest for the trees,
Cut the trees and you'll see there is no forest.