Hirdetés

Új hozzászólás Aktív témák

  • nyunyu

    félisten

    válasz Jim Tonic #4545 üzenetére

    Ezeket egy selectben nem tudod összeszedni, mivel az oszlopfüggvények egymástól függetlenül értékelődnek ki.
    Tehát nem max(valid_from)-hoz tartozó min(valid_to) értéket kapod vissza, hanem a globálisat.

    Maximum azt tudod tenni, hogy egy belső selectben leválogatod a max(valid_from)-okat minden termékhez, majd az a köré írt másik selectben kiveszed a min(valid_to)-t.

    Valahogy így:

    select product,
    price
    from products p
    join (select
    p1.product,
    a.max_valid_from,
    min(nvl(p1.valid_to, to_date('9999-12-31'))) min_valid_to
    from products p1
    join (select p2.product,
    max(nvl(p2.valid_from, to_date('0000-01-01'))) max_valid_to
    from products p2
    group by p2.product) a
    on a.product = p1.product
    and a.max_valid_from = p1.valid_from
    group by p1.product, a.max_valid_from) b
    on b.product = p.product
    and b.max_valid_from = nvl(p.valid_from, to_date('0000-01-01'))
    and b.min_valid_to = nvl(p.valid_to, to_date('9999-12-31'));

    Oszlopfüggvények alapból figyelmen kívül hagyják a nullokat!

Új hozzászólás Aktív témák