Boa Tarde Miltão....

Consegui resolver a parada da consulta aí:

SELECT tta.prateleira,
       CASE
          WHEN row_number()
           over(PARTITION BY tta.fruta_vermelha,
                    tta.prateleira ORDER BY tta.fruta_vermelha) = 1 THEN
           tta.fruta_vermelha
          ELSE
           NULL
       END fruta_vermelha,
       CASE
          WHEN row_number()
           over(PARTITION BY tta.fruta_amarela,
                    tta.prateleira ORDER BY tta.fruta_amarela) = 1 THEN
           tta.fruta_amarela
          ELSE
           NULL
       END fruta_amarela
FROM   (SELECT ff.prateleira, fruta_vermelha, fruta_amarela
        FROM   feira_livre ff
        LEFT   JOIN (SELECT (CASE
                              WHEN ff.cor = 'Vermelha' THEN
                               ff.prateleira
                           END) AS prateleira,
                           (CASE
                              WHEN ff.cor = 'Vermelha' THEN
                               ff.fruta
                           END) AS fruta_vermelha
                    FROM   feira_livre ff) fv
        ON     fv.prateleira = ff.prateleira
        LEFT   JOIN (SELECT (CASE
                              WHEN ff.cor = 'Amarela' THEN
                               ff.prateleira
                           END) AS prateleira,
                           (CASE
                              WHEN ff.cor = 'Amarela' THEN
                               ff.fruta
                           END) AS fruta_amarela
                    FROM   feira_livre ff) fa
        ON     fa.prateleira = ff.prateleira
        GROUP  BY ff.prateleira, fruta_vermelha, fruta_amarela) tta




Em 5 de outubro de 2015 07:43, Ricardo Tajiri rhtaj...@gmail.com
[oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:

>
>
> Estou sem Oracle aqui, então sem jeito pra testar... Mas eu brincaria com
> o row_number(). Algo do tipo:
>
> select NVL(v.prateleira,a.prateleira), v.fruta, a.fruta from
> (select prateleira, fruta, cor, row_number() over (partition by prateleira
> order by fruta) rn
> from feira_livre where cor = 'Vermelha') v
> full outer join
> (select prateleira, fruta, cor, row_number() over (partition by prateleira
> order by fruta) rn
> from feira_livre where cor = 'Amarela') a on v.prateleira = a.prateleira
> and v.rn = a.rn;
>
>
>
>
> Ricardo Hideyuki Tajiri
>
> Em 2 de outubro de 2015 21:40, 'Schiavini' et...@schiavini.inf.br
> [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu:
>
>>
>>
>> Se a quantidade de cores for predefinida, use pivot.
>>
>> Étore
>>
>> From: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br]
>> Sent: sexta-feira, 2 de outubro de 2015 16:17
>> To: oracle_br@yahoogrupos.com.br
>> Subject: [oracle_br] Dúvida SQL - Select
>>
>> Boa tarde amigos!
>>
>> Dados hipotéticos:
>>
>> select prateleira, fruta, cor from feira_livre;
>>
>> Prateleira Fruta Cor
>>
>> 1 Maçã Vermelha
>>
>> 2 Cereja Vermelha
>>
>> 1 Banana Amarela
>>
>> 2 Mamão Amarela
>>
>> 1 Morango Vermelha
>>
>> É possível eu montar um Select que me traga esse resultado?
>>
>> Prateleira Fruta_Vermelha Fruta_Amarela
>>
>> 1 Maçã Banana
>>
>> 1 Morango
>>
>> 2 Cereja Mamão
>>
>> Ou seja: juntei 2 frutas de cores diferentes no mesmo registro, por serem
>>
>> da mesma prateleira, mas elas não tem mais nenhuma relação entre si;
>>
>> Como tinham 2 vermelhas na mesma prateleira, eu joguei pro registro de
>> baixo.
>>
>> Se tivesse uma segunda fruta amarela na prateleira 1, ela também iria pro
>> segundo registro.
>>
>> Att,
>>
>> Image removed by sender.
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
> 
>
  • [oracle... 'Milton Bastos Henriquis Jr.' miltonbas...@gmail.com [oracle_br]
    • Re... André Luiz aandre...@yahoo.com.br [oracle_br]
      • ... Emerson dos Santos Gaudêncio emerson.fen...@gmail.com [oracle_br]
    • RE... 'Schiavini' et...@schiavini.inf.br [oracle_br]
      • ... Ricardo Tajiri rhtaj...@gmail.com [oracle_br]
        • ... Emerson dos Santos Gaudêncio emerson.fen...@gmail.com [oracle_br]

Responder a