União de registros SQL

SQLite

18/08/2016

Boa tarde, preciso de ajudar para unificar os dois registros em um.
Não tenho conhecimentos avançados em programação.


SELECT concat(b.co_protocolo) as "Protocolo",

(CASE WHEN nu_tipo_stco_sltco = 11 THEN d.ts_stco_solicitacao END) as "Validado em",
(CASE WHEN nu_tipo_stco_sltco = 5 THEN d.ts_stco_solicitacao END) as "Emitido em"

FROM cefar_icptb003_solicitacao b,
cefar_icptb011_situacao_solicitacao d

WHERE b.nu_solicitacao = d.nu_solicitacao AND
nu_tipo_stco_sltco in (5,11) AND
b.co_protocolo LIKE '441875560870250559681' AND (obs: simplifiquei para a a tabela não ficar grande)
d.ts_stco_solicitacao between '2016-05-01' AND '2016-05-15' AND
b.co_protocolo IS NOT NULL


ORDER BY "Protocolo"

O código acima me retorna a seguinte tabela

Protocolo-------------------------------- Validado em ----------------------Emitido em
441875560870250000000------2016-05-02 15:45:41.305
441875560870250000000---------------------------------------------- 2016-05-11 10:12:19.756


Eu preciso que o resultado seja apenas um registro com os campos validados e emitidos.
Obs: O campo emitido pode ser nulo mas o validado não.
Hugo

Hugo

Curtidas 0

Melhor post

Leandro Yamaniha

Leandro Yamaniha

18/08/2016

SELECT concat(b.co_protocolo) as "Protocolo",
(SELECT d0.ts_stco_solicitacao FROM cefar_icptb011_situacao_solicitacao d0 where b.nu_solicitacao = d0.nu_solicitacao and nu_tipo_stco_sltco = 11) as "Validado em",
(SELECT d1.ts_stco_solicitacao FROM cefar_icptb011_situacao_solicitacao d1 where b.nu_solicitacao = d1.nu_solicitacao and nu_tipo_stco_sltco = 5) as "Emitido em",
FROM cefar_icptb003_solicitacao b
WHERE b.co_protocolo LIKE ''441875560870250559681'' AND (obs: simplifiquei para a a tabela não ficar grande)

Se a subquery d0 e d1 não tiverem risco de gerar mais do 1 registro vai funcionar.

Verifica se deu certo.
GOSTEI 1

Mais Respostas

Hugo

Hugo

18/08/2016

Oi Leandro,
Retornou mais de um registro.
GOSTEI 0
POSTAR