Preciso fazer uma soma no select

18/06/2016

0

estou precisando somar campos que eu nao sei a quantidade com o where que vem de outra tabela, ou seja estou usando um cursor para somar todos os campos e um inner join para puxar a referencia de quais campos devem ser somados segue exemplos

CREATE PROCEDURE SELECIONAR_PRODUTO

@IDENTIFICADOR INT,
@COD_PRODUTO INT
--@FILTRO INT

AS

BEGIN -- DECLARANDO VARIÁVEL COM O TOTAL DOS PREÇOS DAS IMAGENS

DECLARE @SOMA_PRECO_IMAGENS DECIMAL(18,2)

END

BEGIN
DECLARE SOMAR_PRECOS_IMAGENS CURSOR FOR

SELECT TB_IMAGENS.PRECO FROM TB_IMAGENS

INNER JOIN TB_ESTAMPAS_IMAGENS
ON TB_IMAGENS.COD_IMAGEM = TB_ESTAMPAS_IMAGENS.COD_IMAGEM

INNER JOIN TB_ESTAMPAS
ON TB_ESTAMPAS_IMAGENS.COD_ESTAMPA = TB_ESTAMPAS .COD_ESTAMPA

INNER JOIN TB_PRODUTOS
ON TB_ESTAMPAS.COD_ESTAMPA = TB_PRODUTOS.ESTAMPA

WHERE TB_PRODUTOS.CODIGO = @COD_PRODUTO AND TB_PRODUTOS.ESTAMPA = TB_ESTAMPAS_IMAGENS.COD_ESTAMPA

OPEN SOMAR_PRECOS_IMAGENS

FETCH NEXT FROM SOMAR_PRECOS_IMAGENS

DECLARE @PRECO DECIMAL(18,2)

FETCH NEXT FROM SOMAR_PRECOS_IMAGENS INTO @PRECO
WHILE(@@FETCH_STATUS = 0)
BEGIN

@SOMA_PRECO_IMAGENS = @SOMA_PRECO_IMAGENS + @PRECO

FETCH NEXT FROM SOMAR_PRECOS_IMAGENS INTO @PRECO

END
CLOSE SOMAR_PRECOS_IMAGENS
DEALLOCATE SOMAR_PRECOS_IMAGENS
END

SELECT

TB_PRODUTOS.CODIGO,
TB_PRODUTOS.TAMANHO,
TB_MODELOS.NOME,
TB_ADICIONAIS.NOME AS COR_CAMISETA,
TB_ADICIONAIS.NOME AS COSTURA,
TB_ADICIONAIS.NOME AS COR_COSTURA,
TB_ADICIONAIS.NOME AS OUTROS,
TB_ESTAMPAS.NOME,
TB_PRODUTOS.ESCRITA,
TB_PRODUTOS.IDENTIFICADOR,
TB_PRODUTOS.NOME


FROM TB_PRODUTOS

INNER JOIN TB_MODELOS
ON TB_PRODUTOS.MODELO = TB_MODELOS.COD_MODELO

INNER JOIN TB_ADICIONAIS
ON TB_PRODUTOS.COR_CAMISETA = TB_ADICIONAIS.COD_ADICIONAL

INNER JOIN TB_ESTAMPAS
ON TB_PRODUTOS.ESTAMPA = TB_ESTAMPAS.COD_ESTAMPA

INNER JOIN TB_ESTAMPAS_IMAGENS
ON TB_ESTAMPAS.COD_ESTAMPA = TB_ESTAMPAS_IMAGENS.COD_ESTAMPA

INNER JOIN TB_IMAGENS
ON TB_ESTAMPAS_IMAGENS.COD_IMAGEM = TB_IMAGENS.COD_IMAGEM

WHERE TB_PRODUTOS.IDENTIFICADOR = @IDENTIFICADOR AND TB_PRODUTOS.CODIGO = @COD_PRODUTO
--AND TB_PRODUTOS.FILTRO = @FILTRO

GO
Lucas Rodrigues

Lucas Rodrigues

Responder

Posts

20/06/2016

Larissa Moller

Já tentou usar um sub select?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar