Re: [Oracle] Sql request

From: Thomas Kellerer <OTPXDAJCSJVU_at_spammotel.com>
Date: Sat, 28 Nov 2009 00:25:54 +0100
Message-ID: <7nb5g2F3l5obmU1_at_mid.individual.net>


Ben Finney wrote on 28.11.2009 00:12:
> pif_orders=> SELECT DISTINCT
> order_code,
> order_amount,
> delivery_sequence,
> delivery_amount
> FROM
> (
> SELECT
> code AS order_code,
> amount AS order_amount
> FROM stock_order
> ) AS o
> NATURAL JOIN
> (
> SELECT
> order_code,
> sequence AS delivery_sequence,
> amount AS delivery_amount
> FROM stock_delivery
> ) AS d
> ORDER BY order_code, delivery_sequence;

This can be done a lot easier including the surpressing of repeating values (works in Postgres and Oracle):

select case

          when lag(o.code) over (partition by o.code order by d.sequence) = o.code then ''
          else o.code
       end, 
       case
          when lag(o.code) over (partition by o.code order by d.sequence) = o.code then null
          else o.amount
       end as order_amount, 
       d.sequence as delivery_sequence, 
       d.amount as delivery_amount

from stock_order o

   join stock_delivery d on o.code = d.order_code order by o.code, d.sequence;

And even if the "blank" stuff should be in there I don't understand the complicated sub-query you were using :)

Thomas Received on Fri Nov 27 2009 - 17:25:54 CST

Original text of this message