Array
(
)

Preciso fazer uma soma no select

Lucas Rodrigues
   - 18 jun 2016

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

Larissa Moller
   - 20 jun 2016

Já tentou usar um sub select?