Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex Reginaldo da Cruz

Procedure SQL 2005

Recommended Posts

Tenho 3 Tabelas sendo elas :EmpresasID_EMPRESA VARCHAR(2)EMPRESA VARCHAR(50)...PagamentosId_pagamentos intPagamento DateTimeValor Numeric(18,2)Id_empresa Varchar(2)...RecebimentosId_ recebimentos intRecebimento DateTimeValor Numeric(18,2)Id_empresa Varchar(2)...E gostaria de fazer uma SP para me retornar empresa, pagamento dia , recebimento dia, resultado dia , pagamento mês , recebimento mês e resultado mes !No Firebird isso é muito simples mais ainda não achei isso no SQL No FireBird isso ficaria assim :

CREATE procedure empresa_sel(dt_inicial date, dt_final date) returns (id_empresa varchar(2),razao varchar(70),Recebimento_dia Numeric(18,2),Pagamento_dia Numeric(18,2),Resultado_dia Numeric(18,2),Recebimento_mes Numeric(18,2),Pagamento_mes Numeric(18,2),Resultado_mes Numeric(18,2)ASbeginFOR SELECT id_empresa,razaoFROM empresaINTO :id_empresa,:razaodobeginSELECT sum(valor) FROM recebimento WHERE recebimento = dt_final AND id_mpresa = :id_empresa INTO :Recebimento_dia ;SELECT sum(valor) FROM pagamento WHERE pagamento = :dt_finalAND id_empresa = :id_empresa INTO :Pagamento_dia ;SELECT sum(valor) FROM recebimento WHERE (recebimento BETWEEN :dt_inicial AND :dt_final) AND id_mpresa = :id_empresa INTO :Recebimento_mes ;SELECT sum(valor) FROM pagamento WHERE (pagamento BETWEEN :dt_inicial AND :dt_final) AND id_empresa = :id_empresa INTO :Pagamento_mes ;Resultado_dia = :Recebimento_dia - :Pagamento_dia ;Resultado_Mes = :Recebimento_mes - :Pagamento_mes ;suspend; -- Aqui a linha mágica que não encontro no SQL Server !!! -- Enquanto não der um suspend posso colocar quantos instruções achar -- necessário pois o ele so ira retornar a linha após este comando endend

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não vai ser tão simples assim deve dar alguns errinhos mas tentei ajudar convertendo sua procedure na unha aqui:

 

CREATE PROCEDURE empresa_sel

   @dt_inicial DATETIME,
   @dt_final   DATETIME

AS

SELECT emp.empresa,
       pagamento_dia   = Sum(pagdia.valor),
       recebimento_dia = Sum(recdia.valor),
       resultado_dia   = Sum(recdia.valor)-Sum(pagdia.valor),

       pagamento_mes   = Sum(pagmes.valor),
       recebimento_mes = Sum(recmes.valor),
       resultado_mes   = Sum(recmes.valor)-Sum(pagmes.valor)

  FROM Empresas emp

-- Dia -------------------------------------

 INNER JOIN Pagamentos pagdia
    ON pagdia.id_empresa  = emp.id_empresa
   AND pagdia.pagamento   = @dt_final

 INNER JOIN Recebimentos recdia
    ON recdia.id_empresa  = emp.id_empresa
   AND recdia.recebimento = @dt_final

-- Mês -------------------------------------

 INNER JOIN Pagamentos pagmes
    ON pagmes.id_empresa  = emp.id_empresa
   AND pagmes.pagamento   BETWEEN @dt_inicial AND @dt_final

 INNER JOIN Recebimentos recmes
    ON recmes.id_empresa  = emp.id_empresa
   AND recmes.recebimento BETWEEN @dt_inicial AND @dt_final

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

 

Identei do meu jeito aqui para visualizar melhor mas pode mudar o que quiser.

Vê no que que dá esse bicho todo aí!

 

[]tz e boa sorte! ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.