União de registros SQL
18/08/2016
0
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.
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
Curtir tópico
+ 0
Responder
Post mais votado
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.
(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.
Leandro Yamaniha
Responder
Mais Posts
Clique aqui para fazer login e interagir na Comunidade :)