Preciso consultar um banco onde ocorre o seguinte:
processo: campos: id (entre outros)
acoesProcesso: campos: id(chave estrangeira referente a tabela processo), HoraAcao, Tipo
Preciso relacionar os processos e a horaAcao onde houveram açoes do tipo "abrir" e "fechar"
Como devo proceder?
pode acontecer de uma acao ocorrer mais de uma vez., Por exemplo, "abrir", mas só depois que a acao "fechar" tiver sido acionada. POrem, necessito apenas do primeiro caso de cada acao.
Tentei assim:
with CONSULTA as ( SELECT incident.incident_id, ar.date_actioned dtAcao, ar.act_type_id IdAcao, row_number() over (partition by incident.incident_id order by ar.date_actioned ASC ) as linha
FROM incident
INNER JOIN jptsys_tabledata d on d.table_name = 'incident'
INNER join act_reg ar on ar.incident_id = incident.incident_id
WHERE incident.incident_id <> 0
AND incident.down_flag = 'n'
AND ar.act_type_id = '112'--acao abrir
and incident.date_logged > '25/01/2017' ),
CONSULTA2 as ( SELECT incident.incident_id, ar.date_actioned dtAcao, ar.act_type_id IdAcao, row_number() over (partition by incident.incident_id order by ar.date_actioned ASC ) as linha
FROM incident
INNER JOIN jptsys_tabledata d on d.table_name = 'incident'
INNER join act_reg ar on ar.incident_id = incident.incident_id
WHERE incident.incident_id <> 0
AND incident.down_flag = 'n'
AND ar.act_type_id = '113'--acao fechar
and incident.date_logged > '25/01/2017' ),
pendenciaUSU as ( select * from consulta where linha = 1 order by incident_id ),--41 registros (correto)
pendenciaSAN as ( select * from consulta2 where linha = 1 order by incident_id )--41 registros (correto)
select pUsu.incident_id, pUsu.dtAcao, pSan.incident_id, pSan.dtAcao from pendenciaUSU pUsu , pendenciaSAN pSan --nesta linha o resultado aparece multiplicado, me fornecendo 1482 registros
Pergunta
Fabricio Luiz
Amigos, preciso da ajuda de vocês.
Preciso consultar um banco onde ocorre o seguinte:
processo: campos: id (entre outros)
acoesProcesso: campos: id(chave estrangeira referente a tabela processo), HoraAcao, Tipo
Preciso relacionar os processos e a horaAcao onde houveram açoes do tipo "abrir" e "fechar"
Como devo proceder?
pode acontecer de uma acao ocorrer mais de uma vez., Por exemplo, "abrir", mas só depois que a acao "fechar" tiver sido acionada. POrem, necessito apenas do primeiro caso de cada acao.
Tentei assim:
with CONSULTA as ( SELECT incident.incident_id, ar.date_actioned dtAcao, ar.act_type_id IdAcao, row_number() over (partition by incident.incident_id order by ar.date_actioned ASC ) as linha
FROM incident
INNER JOIN jptsys_tabledata d on d.table_name = 'incident'
INNER join act_reg ar on ar.incident_id = incident.incident_id
WHERE incident.incident_id <> 0
AND incident.down_flag = 'n'
AND ar.act_type_id = '112'--acao abrir
and incident.date_logged > '25/01/2017' ),
CONSULTA2 as ( SELECT incident.incident_id, ar.date_actioned dtAcao, ar.act_type_id IdAcao, row_number() over (partition by incident.incident_id order by ar.date_actioned ASC ) as linha
FROM incident
INNER JOIN jptsys_tabledata d on d.table_name = 'incident'
INNER join act_reg ar on ar.incident_id = incident.incident_id
WHERE incident.incident_id <> 0
AND incident.down_flag = 'n'
AND ar.act_type_id = '113'--acao fechar
and incident.date_logged > '25/01/2017' ),
pendenciaUSU as ( select * from consulta where linha = 1 order by incident_id ),--41 registros (correto)
pendenciaSAN as ( select * from consulta2 where linha = 1 order by incident_id )--41 registros (correto)
select pUsu.incident_id, pUsu.dtAcao, pSan.incident_id, pSan.dtAcao from pendenciaUSU pUsu , pendenciaSAN pSan --nesta linha o resultado aparece multiplicado, me fornecendo 1482 registros
o que sera?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.