Como unir dois Select em uma só Query?

SQL

Oracle PL SQL

23/10/2021

Oi,

Tenho aqui uma query SQL que me retorna listagem de pessoas, cargo, processo seletivo, classificação, cargo e datas de admissão e demissão.

SELECT
RHPESS_CONTRATO.NOME,
RHPESS_CONTRATO.APELIDO,
RHPESS_CONTRATO.SITUACAO_CONTRATO,
RHPESS_CONTRATO.COD_LOCAL1,
RHPESS_CONTRATO.COD_LOCAL2,
RHPESS_CONTRATO.COD_LOCAL3,
RHPESS_CONTRATO.CARGO "CARGO",
RHPESS_CONTRATO.MOTIVO_ADMISSAO,
RHPESS_CONTRATO.CLASSIFICACAO_CONCURSO,
RHPESS_CONTRATO.CARGO,
TO_CHAR(RHPESS_CONTRATO.DATA_ADMISSAO,''DD/MM/YYYY'') Dt_Admissao,
TO_CHAR(RHPESS_CONTRATO.DATA_RESCISAO,''DD/MM/YYYY'') Dt_Recisao

FROM
MGS.RHPESS_CONTRATO

WHERE
RHPESS_CONTRATO.COD_LOCAL1 = ''000100''
AND RHPESS_CONTRATO.TIPO_CONTRATO = ''0001''
AND RHPESS_CONTRATO.CLASSIFICACAO_CONCURSO IS NOT NULL
AND RHPESS_CONTRATO.MOTIVO_ADMISSAO = ''7245''

ORDER BY RHPESS_CONTRATO.MOTIVO_ADMISSAO ASC


Gostaria de incluir a informação de valor bruto mensal que esta nesta query
SELECT
RHMOVI_MOVIMENTO.CODIGO_CONTRATO,
RHMOVI_MOVIMENTO.ANO_MES_REFERENCIA,
RHMOVI_MOVIMENTO.VALOR_VERBA

FROM
CRHH.RHMOVI_MOVIMENTO

WHERE
RHMOVI_MOVIMENTO.CODIGO_EMPRESA = ''0001''
AND RHMOVI_MOVIMENTO.TIPO_CONTRATO = ''0001''
AND RHMOVI_MOVIMENTO.CODIGO_VERBA = ''4001''
AND RHMOVI_MOVIMENTO.TIPO_MOVIMENTO = ''ME''
AND TRUNC(RHMOVI_MOVIMENTO.ANO_MES_REFERENCIA,''MONTH'') = TRUNC(SYSDATE,''MONTH'')



Como eu faria para unir estas duas querys?
Marco Sousa

Marco Sousa

Curtidas 0

Respostas

Yuri Aguiar

Yuri Aguiar

23/10/2021

Fala Marco, tudo em cima ?

Vou tentar de explicar de uma forma simples.
No sql você já deve ter visto ou ouvido falar do 'INNER JOIN'. A função dele é permitir a junção das tabelas, porém você deve ter um registro igual em ambas tabelas, como por exemplo o 'ID'.
Tendo isso em mente você pode fazer da seguinte forma:

A tabela 'RHPESS_CONTRATO' possui um 'ID', certo ?
E na tabela 'RHMOVI_MOVIMENTO' possui o 'ID' dos contrato.

Então basta fazer o 'INNER JOIN' citado acima. Ficaria assim

SELECT
    c.nome,
    c.apelido,
    c.situa
    c.situacao_contrato,
    c.cod_local1,
    c.cod_local2,
    c.cod_local3,
    c.cargo,
    motivo_admissao,
    c.classificacao_concurso,
    c.cargo,
    m.ano_mes_referencia,
    m.valor_verba,
    TO_CHAR(c.data_admissao, ''DD/MM/YYYY''),
    TO_CHAR(c.data_rescisao, ''DD/MM/YYYY'')
 
FROM
    rhpess_contrato c
 
INNER JOIN
    rhmovi_movimento m
ON
    c.id = m.id   

WHERE
    c.cod_local1 = ''000100''
    m.codigo_empresa = ''0001''
        AND c.tipo_contrato = ''0001''
        AND c.classificacao_concurso IS NOT NULL
        AND c.motivo_admissao = ''7245''
        AND m.codigo_verba = ''4001''
        AND m.Ttipo_movimento = ''ME''
        AND TRUNC(m.ano_mes_referencia, ''MONTH'') = TRUNC(SYSDATE,''MONTH'');


Espero que rode kkk e que te ajude.
Abraços
GOSTEI 0
POSTAR