Duvida para uniao de consultas

13/10/2020

0

Qdo vc iguala uma query ex.
dia balanca = dia abastecimento
tenho moagem dia 30/09 porem nao tenho abastecimento no dia 30/09
como eu faço para query trazer a moagem do dia 30/09?

Qual é a melhor forma de fazer a união de 2 tabelas diferentes, porém com campos iguais para efetuar a ligação?
Mario Castilho

Mario Castilho

Responder

Posts

13/10/2020

Emerson Nascimento

se eu entendi, deve ser algo assim:
select
   campoa, campob, campoc, campod, diabalanca as dtmov
from
   tabela1
where
   diabalanca = '30/09'

union all

select
   campoa, campob, campoc, campod, diaabastecimento
from
   tabela2
where
   diaabastecimento = '30/09'

ou ainda:
select
   *
from
(
   select
      campoa, campob, campoc, campod, diabalanca as dtmov
   from
      tabela1
   [where ]

   union all

   select
      campoa, campob, campoc, campod, diaabastecimento
   from
      tabela2
   [where ]
) T
where
   T.dtmov = '30/09'

na verdade poder haver outras formas, mas seria necessário mais informações.
Responder

16/10/2020

Mario Castilho

Como poderia unir via left join 3 tabelas, nessa query?

---------------------------------------

SELECT A.MES_ANO,
A.COD_EQUIPAMENTO,
A.VIDA_KM_HR,
A.EQUIPAMENTO,
A. RESPONSAVEL,
A.QUANTIDADE_DIESEL,
B.MOAGEM_PRODUCAO,
-- A.DATA,


(SELECT SUM(X.QUANTIDADE) AS QUANTIDADE
FROM TAB_OFI_ABASTEC X
WHERE X.COD_PROPRIETARIO in ('10','1021')
AND X.COD_MATERIAL = '51405'
AND X.COD_CENTRO_CUSTO in( '3121','3120','3102')
AND TRIM(X.COD_EQUIPAMENTO) = TRIM(A.COD_EQUIPAMENTO)
AND TRIM(X.MES_ANO(+)) = TRIM(A.MES_ANO)

) OLEO_HIDRAULICO

FROM (SELECT MES_ANO AS MES_ANO,
TO_CHAR(DATA, 'DD/MM/YYYY') AS DATA,
TRIM(COD_EQUIPAMENTO) AS COD_EQUIPAMENTO,
TRIM(SUBSTR(EQUIPAMENTO, 10, 20)) AS EQUIPAMENTO,
SUM(QUANTIDADE) AS QUANTIDADE_DIESEL,
SUM(VIDA_KM_HR) AS VIDA_KM_HR,
RESPONSAVEL


FROM TAB_OFI_ABASTEC
WHERE COD_PROPRIETARIO in ('10','1021')
AND COD_MATERIAL IN ('1537', '235531', '225608')
AND MES_ANO IN ('01/2020',
'02/2020',
'03/2020',
'04/2020',
'05/2020',
'06/2020',
'07/2020',
'08/2020',
'09/2020',
'10/2020',
'11/2020',
'12/2020')
AND COD_CENTRO_CUSTO IN ('3121','3102','3120')




GROUP BY MES_ANO, COD_EQUIPAMENTO, EQUIPAMENTO, RESPONSAVEL, TO_CHAR(DATA, 'DD/MM/YYYY')) A,

(SELECT MES AS MES,
TRIM(COLHEDORA1) AS COLHEDORA1,
SUM(LIQUI) AS MOAGEM_PRODUCAO,
TO_CHAR(CONT_DIA_BALANCA, 'DD/MM/YYYY') AS CONT_DIA_BALANCA

FROM TAB_FRC_ENTRADa_CLu
WHERE ENT_COD_EMPR IN ('10')

GROUP BY MES, COLHEDORA1, TO_CHAR(CONT_DIA_BALANCA, 'DD/MM/YYYY')) B
where TRIM(a.MES_ANO) = TRIM(b.MES)
and trim(a.data)=b.cont_dia_balanca(+)

AND TRIM(A.COD_EQUIPAMENTO) =TRIM(B.COLHEDORA1)
Responder

16/10/2020

Emerson Nascimento

veja se é algo assim...
SELECT
	A.MES_ANO,
	A.COD_EQUIPAMENTO,
	SUM(A.VIDA_KM_HR) AS VIDA_KM_HR,
	TRIM(SUBSTR(A.EQUIPAMENTO, 10, 20)) AS EQUIPAMENTO,
	A.RESPONSAVEL,
	SUM(A.QUANTIDADE) AS QUANTIDADE_DIESEL,
	B.MOAGEM_PRODUCAO,
--	TO_CHAR(A.DATA, 'DD/MM/YYYY') AS DATA,
	C.QUANTIDADE AS OLEO_HIDRAULICO
FROM
	TAB_OFI_ABASTEC A
LEFT JOIN
	(	SELECT
			MES,
			COLHEDORA1,
			TO_CHAR(CONT_DIA_BALANCA, 'DD/MM/YYYY') AS CONT_DIA_BALANCA,
			SUM(LIQUI) AS MOAGEM_PRODUCAO
		FROM
			TAB_FRC_ENTRADa_CLu
		WHERE
			ENT_COD_EMPR IN ('10')
		GROUP BY
			MES, COLHEDORA1, TO_CHAR(CONT_DIA_BALANCA, 'DD/MM/YYYY')
	) B ON	TRIM(B.MES) = TRIM(A.MES_ANO)
			AND TRIM(B.COLHEDORA1) = TRIM(A.COD_EQUIPAMENTO)
			AND TRIM(B.CONT_DIA_BALANCA) = TRIM(A.DATA)
LEFT JOIN
	(	SELECT
			COD_EQUIPAMENTO
			MES_ANO,
			SUM(QUANTIDADE) AS QUANTIDADE
		FROM
			TAB_OFI_ABASTEC
		WHERE
			COD_PROPRIETARIO IN ('10','1021')
			AND COD_MATERIAL = '51405'
			AND COD_CENTRO_CUSTO IN ( '3121','3120','3102')
		GROUP BY 
			COD_EQUIPAMENTO, MES_ANO
	) C ON	TRIM(C.COD_EQUIPAMENTO) = TRIM(A.COD_EQUIPAMENTO)
			AND TRIM(C.MES_ANO) = TRIM(A.MES_ANO)
WHERE
	A.COD_PROPRIETARIO in ('10','1021')
	AND A.COD_MATERIAL IN ('1537', '235531', '225608')
	AND RIGHT(TRIM(A.MES_ANO),4) = '2020' -- ANO = 2020
--	AND A.MES_ANO LIKE '%/2020' -- ANO = 2020
	AND A.COD_CENTRO_CUSTO IN ('3121','3102','3120')
GROUP BY
	A.MES_ANO, A.COD_EQUIPAMENTO, A.EQUIPAMENTO,
	A.RESPONSAVEL, TO_CHAR(A.DATA, 'DD/MM/YYYY'),
	B.MOAGEM_PRODUCAO,
	C.QUANTIDADE

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar