Jump to content
Jafreal

[Resolvido] Logica de Programação SQL usando MIN() com SUM()

Recommended Posts

Bom dia a todos

 

Tenho essa query abaixo que estou colocando em um "pedaço" do sistema RM, chamado CUBO.

DECLARE @CODCOTACAO NVARCHAR(40)
DECLARE @CODCOLIGADA INT

SET @CODCOTACAO ='2020.000170' -- (numero de cotação)
SET @CODCOLIGADA = '2'

SELECT  Y.IDPRD,MIN(Y.VALCOTACAO * Y.QUANTIDADEORC)  as VALOR
FROM TCITMORCAMENTO (NOLOCK) Y
WHERE Y.CODCOLIGADA = @CODCOLIGADA
AND Y.CODCOTACAO =  @CODCOTACAO
AND Y.VALCOTACAO > 0
GROUP BY  Y.IDPRD

Essa query poderá, em grande maioria de vezes, me trazer um grande número de linhas, pois estou trazendo de uma cotação os valores mais baixo por produto. Até ai tudo bem, mas me surge um problema, pois devo agora somar o conteúdo, campo VALOR, de todos os itens. Sei que a melhor maneira seria criar uma tabela temporária, mas dentro ERP RM, o mesmo não permite utilizar querys que criam tabelas temporárias e por isso que estou aqui. Gostaria de vocês alguma sugestão para esse dilema. Como somar  as linhas que surgiram dessa query?

Share this post


Link to post
Share on other sites

 tente assim

SELECT SUM(VALOR) AS TOTAL
FROM
(
SELECT  Y.IDPRD,MIN(Y.VALCOTACAO * Y.QUANTIDADEORC)  as VALOR
FROM TCITMORCAMENTO (NOLOCK) Y
WHERE Y.CODCOLIGADA = @CODCOLIGADA
AND Y.CODCOTACAO =  @CODCOTACAO
AND Y.VALCOTACAO > 0
GROUP BY  Y.IDPRD
) VIRTUAL

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By david2007
      Endpointer Framework é um Framework PHP para construção de APIs REST com Programação Procedural.
       
      http://endpointer.com
       
      Endpointer Framework é Código Aberto sob a licença MIT
       

    • By MarcosAntonio
      boa tarde. 
      Estou precisando de um Select que retorne uma soma que ao chegar a determinado valor ela reinicie e continue fazendo sucessivamente
       select   pedido,   volume,   limite,   SUM(volume) over (order by pedido ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) saldo   from pedidos  group by pedido o select está retornando assim porém quero que toda vez que chegue ou passe do limite resete o saldo, por exemplo parar no 100 que é o limite e começar um novo saldo
      pedido     volume    limite    saldo  1             70            100        70  2             10            100        80  3             20            100        100  4             50            100        150  5             30            100        180  
      preciso que ele soma o volume enquanto o saldo seja <= que o "limite", quando passar pare de somar e comece outra soma começando do 0, como no exemplo abaixo.
      pedido    volume    limite    saldo  1             70            100        70  2             10            100        80  3             20            100        100  4             50            100        50  5             30            100        80  
    • By andreluis78
      Olá a todos.
      Criei um procedimento para verificar se um usuário está cadastrado no banco de dados.
      Utilizo Firebird como BD e componentes Zeos para acessar o banco.
      Resolvi criar uma query em tempo de execução para fazer a verificação. Não dá nenhum erro, porém, quando digito o nome do usuário no Edit e clico
      no botão que executa o procedimento, ele dá ''usuário inexistente'', mesmo se o nome do usuário estiver cadastrado no banco.
       
      Segue o código:
       
      procedure Tfrm_login.SpeedButton1Click(Sender: TObject); var Qry : TZQuery; begin   Qry:=TZQuery.Create(nil);   Qry.Connection := dm_dados.ZConnection1;  //componente de conexão   Qry.SQL.Add('select codigo, nome, acessar, user, pass from clientes');   Qry.Open;   if Qry.Locate('USER',Edit1.Text,[]) then   begin     ShowMessage('usuário cadastrado');   end   else   begin     ShowMessage('usuário inexistente');     Edit1.SetFocus;   end;   FreeAndNil(Qry); end;  
      Se alguém puder ajudar agradeço desde já.
      Obrigado
    • By diegosrg
      Olá pessoal!
      Preciso de um help por favor.
      Seguinte, tenho uma base de dados abaixo e preciso incluir uma coluna com os valores acumulado do mês independente do produto.Base atual:
      YEARMONTH / PRODUTO/ VALOR 202001 /ABC / 123,00 202001 /DEF / 234,00 202002 /ABC / 289,00 202002 /GHU / 222,00  
      Com a nova coluna ficaria assim:
      YEARMONTH / PRODUTO/ VALOR / VALOR ACUMULADO 202001 /ABC / 123,00 / 357,00 202001 /DEF / 234,00 / 357,00 202002 /ABC / 289,00 / 511 202002 /GHU / 222,00 / 511  
      Alguém tem alguma dica?!
      Desde já agradeço
    • By FabianoSouza
      Pessoal, por que isso não funciona no SQL?
      SET @sql = 'SELECT ' SET @sql = @sql + @status + ' = meuCampo FROM minhaTab' EXEC(@sql) SELECT @status Preciso passar o resultado para a variável @status.
      Como faço??
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.