Oracle - Select
Tendo o seguinte código:
Retorna:
a a
b a
c a
Como fazer para retornar:
a a
b
c
??
Obrigado.
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) ARetorna:
a a
b a
c a
Como fazer para retornar:
a a
b
c
??
Obrigado.
Rafael Santos
Curtidas 0
Respostas
Rafael Santos
23/02/2016
Alguém por favor :(
GOSTEI 0
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,
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
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]
[img]http://arquivo.devmedia.com.br/forum/imagem/411885-20160224-162442.png[/img]
GOSTEI 0
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:
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.
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