Ir para conteúdo
Fórum Script Brasil
  • 0

mostrar resultado de dois selects, um em cada coluna


Ricarte Barcelos

Pergunta

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?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros 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!

 

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...