Jump to content
Jose Aguiar

Query para somar varias linhas de uma subquery

Recommended Posts

Jose Aguiar

Bom dia a todos

Tenho a query abaixo, pra quem conhece o sistema RM, vai saber do que estou falando, mas para quem só entende de linguagem SQL também entenderá.(Srs antes que de mais nda quero pedir desculpas se minha grafia de algumas palavras é incomum, pois sou brasileiro e bem sei que esse fórum é protugues, mas o que vale é o intercambio)

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. Desde já agradeço a ajuda.

Edited by M6
Formatação de código.

Share this post


Link to post
Share on other sites
antseq

Viva,

Não permite por exemplo:

Por ITEM:
SELECT  Y.IDPRD,SUM(MIN(Y.VALCOTACAO * Y.QUANTIDADEORC)) as IVALOR
...
GROUP BY  Y.IDPRD

TODOS:
SELECT  SUM(MIN(Y.VALCOTACAO * Y.QUANTIDADEORC)) as TVALOR
...

cps,

A.S.

Share this post


Link to post
Share on other sites
M6

Não percebi a questão do RM (que desconheço) quanto às tabelas temporárias.
O RM não sabe, nem tem de saber, se o SP do SQL Server usa, ou não, tabelas temporárias (a menos que o utilizador tenha algum tipo de parametrização especifica que desconheço).

Se fizeres isso com uma tabela temporária qual é a questão?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Jose Aguiar

Já achei uma resposta em outro site e aqui deixo a resposta meus amigos.

DECLARE @CODCOTACAO NVARCHAR(40)
DECLARE @CODCOLIGADA INT

SET @CODCOTACAO ='2020.000170' --TEM 24 LINHAS
SET @CODCOLIGADA = '2'


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

 

Grato a todos

 

Edited by M6
Formatação de código.

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.