União de registros SQL
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
Curtidas 0
Melhor post
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.
(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
18/08/2016
Oi Leandro,
Retornou mais de um registro.
Retornou mais de um registro.
GOSTEI 0