• 0
Sign in to follow this  
Ricarte Barcelos

mostrar resultado de dois selects, um em cada coluna

Question

bom dia!

preciso utilizar os resultados dos dois selects abaixo na produção de um relatório:

 

select 
mma_mat_cod, 
mat_desc_resumida,
Sum(mma_qtd) AS saida
from mma, mat
where mma_mat_cod = mat_cod and 
      mma_tipo_operacao = 'S2' and 
      mma_data_mov BETWEEN '2015-10-01 00:00:00' AND '2015-10-10 00:00:00'
group by 
mma_mat_cod, 
mat_desc_resumida
SELECT mma_mat_cod, 
mat_desc_resumida,
        Sum(mma_qtd)  AS devolucao
from mma,mat
where mma_mat_cod = mat_cod and 
      mma_tipo_operacao = 'E4' and 
      mma_data_mov BETWEEN '2015-10-01 00:00:00' AND '2015-10-10 00:00:00'
group by 
mma_mat_cod, 
mat_desc_resumida

o relatório deve mostrar o material que foi enviado do estoque para os setores (primeiro select) e mostrar se houve devolução para o estoque (segundo select).

 

mma_tipo_operacao indica qual a operação a ser realizada. S2 indica a saída e E4 devolução.

 

vocês poderiam me ajudar?

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Brother,

Não sei mas para tal cenário ou montaria uma tabela temporária, jogaria o resultado de cada select para coluna e retornaria o conteúdo como saída de uma proc.

OBS: Não vou fazer o SQL para você, mas a lógica esta descrita acima, agora é só executar.

[]s

Até mesmo dá para você colocar estes "SUM" em colunas diferentes já que o agrupamento de dados é o mesmo 

[]s

Share this post


Link to post
Share on other sites
  • 0

Boa tarde amigo!

Se entendi a simplicidade do que precisa eu pensaria da seguinte forma...  ou substituiria os dois select por um único e resultados em colunas distintas...como segue a baixo:

SELECT mma_mat_cod         AS Matrivula, 
              mat_desc_resumida AS Descricao,
              Sum(mma_qtd)         AS saida,
              Sum(mma_qtd)         AS devolucao
      from mma,mat
   where mma_mat_cod = mat_cod and 
              mma_tipo_operacao = 'E4' and 
              mma_data_mov BETWEEN '2015-10-01 00:00:00' 
                                                   AND '2015-10-10 00:00:00'
group by  mma_mat_cod, 
                mat_desc_resumida;

Ou se não for viável para a sua necessidade como você já possui as informações, criaria uma VIEW unindo as duas Consultas

CREATE OR REPLACE VIEW CONSUT_SAIDA_DEVOLUCAO (Dt_Inicial  date, Dt_Final  date)

AS

select  mma_mat_cod, 
           mat_desc_resumida,
           Sum(mma_qtd) AS saida
  from mma, mat
where mma_mat_cod = mat_cod and 
           mma_tipo_operacao = 'S2' and 
            mma_data_mov BETWEEN to_char(Dt_Inicial, 'dd/mm/yyyy')   AND  to_char(Dt_Final, 'dd/mm/yyyy')  
group by 
           mma_mat_cod, 
           mat_desc_resumida
Union
SELECT mma_mat_cod, 
              mat_desc_resumida,
              Sum(mma_qtd)  AS devolucao
     from mma,mat
   where mma_mat_cod = mat_cod and 
              mma_tipo_operacao = 'E4' and 
              mma_data_mov BETWEEN to_char(Dt_Inicial, 'dd/mm/yyyy')   AND  to_char(Dt_Final, 'dd/mm/yyyy')
group by 
             mma_mat_cod, 
             mat_desc_resumida;

Aí basta criar seu relatório atrelado a view.

a consulta ficaria com período dinâmico exemplo.

select * from CONSUT_SAIDA_DEVOLUCAO ('10/09/2016', '15/09/2016')

Ajustar código a sua necessidade, Espero ter ajudado!

 

Agora, Ed Flavio disse:

Boa tarde amigo!

Se entendi a simplicidade do que precisa eu pensaria da seguinte forma...  ou substituiria os dois select por um único e resultados em colunas distintas...como segue a baixo:

SELECT mma_mat_cod         AS Matrivula, 
              mat_desc_resumida AS Descricao,
              Sum(mma_qtd)         AS saida,
              Sum(mma_qtd)         AS devolucao
      from mma,mat
   where mma_mat_cod = mat_cod and 
              mma_tipo_operacao = 'E4' and 
              mma_data_mov BETWEEN '2015-10-01 00:00:00' 
                                                   AND '2015-10-10 00:00:00'
group by  mma_mat_cod, 
                mat_desc_resumida;

Ou se não for viável para a sua necessidade como você já possui as informações, criaria uma VIEW unindo as duas Consultas

CREATE OR REPLACE VIEW CONSUT_SAIDA_DEVOLUCAO (Dt_Inicial  date, Dt_Final  date)

AS

select  mma_mat_cod, 
           mat_desc_resumida,
           Sum(mma_qtd) AS saida
  from mma, mat
where mma_mat_cod = mat_cod and 
           mma_tipo_operacao = 'S2' and 
            mma_data_mov BETWEEN to_char(Dt_Inicial, 'dd/mm/yyyy')   AND  to_char(Dt_Final, 'dd/mm/yyyy')  
group by 
           mma_mat_cod, 
           mat_desc_resumida
Union
SELECT mma_mat_cod, 
              mat_desc_resumida,
              Sum(mma_qtd)  AS devolucao
     from mma,mat
   where mma_mat_cod = mat_cod and 
              mma_tipo_operacao = 'E4' and 
              mma_data_mov BETWEEN to_char(Dt_Inicial, 'dd/mm/yyyy')   AND  to_char(Dt_Final, 'dd/mm/yyyy')
group by 
             mma_mat_cod, 
             mat_desc_resumida;

Aí basta criar seu relatório atrelado a view.

a consulta ficaria com período dinâmico exemplo.

select * from CONSUT_SAIDA_DEVOLUCAO ('10/09/2016', '15/09/2016')

Ajustar código a sua necessidade, Espero ter ajudado!

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this