Oracle - Select

Oracle

23/02/2016

Tendo o seguinte código:

SELECT *
  FROM (SELECT VALUE
          FROM ((SELECT 'a' V1, 'b' V2, 'c' V3 FROM DUAL)
                UNPIVOT(VALUE FOR VALUE_TYPE IN (V1, V2, V3)))) B,
       (SELECT 'a' A FROM DUAL) A


Retorna:
a a
b a
c a

Como fazer para retornar:
a a
b
c

??

Obrigado.
Rafael Santos

Rafael Santos

Curtidas 0

Respostas

Rafael Santos

Rafael Santos

23/02/2016

Alguém por favor :(
GOSTEI 0
Arthur Netto

Arthur Netto

23/02/2016

Você não pode usar a mesma logica que fez para a lista B?
Seta os valores vazios na lista A.

SELECT *
FROM (SELECT VALUE
FROM ((SELECT 'a' V1, 'b' V2, 'c' V3 FROM DUAL)
UNPIVOT(VALUE FOR VALUE_TYPE IN (V1, V2, V3)))) B,
(SELECT VALUE
FROM ((SELECT 'a' V1, '' V2, '' V3 FROM DUAL)
UNPIVOT(VALUE FOR VALUE_TYPE IN (V1, V2, V3)))) A,
GOSTEI 0
Rafael Santos

Rafael Santos

23/02/2016

Não Arthur, o retorno continua sendo o mesmo..

[img]http://arquivo.devmedia.com.br/forum/imagem/411885-20160224-162442.png[/img]
GOSTEI 0
Rafael Santos

Rafael Santos

23/02/2016

Esse devmedia já foi melhor para ajudar em soluções mais complexas de problemas.... que pena..

Para uma solução simples que encontrei para solucionar este foi:


CASE WHEN campo = LAG (campo,1) OVER (ORDER BY campo) THEN
  NULL 
ELSE 
  campo 
END  

verifica se o próximo é o mesmo.. se for, mando nulo se não mando o campo.. assim fica correto.

Espero ajudar alguém caso tenham o mesmo problema.
GOSTEI 0
POSTAR