Fórum Update avançado contendo case/inner join/group by #528484

12/08/2015

0

Estou tentando fazer o update abaixo porem ao executar me retorna

multiple rows in singleton select.

E não estou conseguindo passar disso podem me ajudar??





UPDATE PRODUTO
SET PRODUTO.grupo2 = (SELECT case
WHEN (((ESTOQUELOTE.VALIDADE - CURRENT_DATE) <= 180) and (((ESTOQUELOTE.VALIDADE - CURRENT_DATE) > 0)) )
THEN '2'
WHEN ((ESTOQUELOTE.VALIDADE - CURRENT_DATE) > 0) and
((case when( ((sum(case when( (inf.NATOPERACAO in ('251','378','588','579','316','445','546')))
then ((inf.QTDE)* 1)
else ((inf.QTDE) * (0))
end)
+
sum(case when( (inf.NATOPERACAO in ('23','592','133','589')))
then ((inf.QTDE)* -1)
else ((inf.QTDE) * (0))
end) )/ 365) <= '0')
then '0'
else CAST(ROUND(( PRODUTO.ESTATUAL / ((sum(case when( (inf.NATOPERACAO in ('251','378','588','579','316','445','546')))
then ((inf.QTDE)* 1)
else ((inf.QTDE) * (0))
end)
+
sum(case when( (inf.NATOPERACAO in ('23','592','133','589')))
then ((inf.QTDE)* -1)
else ((inf.QTDE) * (0))
end) )/ 365)) ,2) AS DECIMAL(12,2)) end) >= 360)
THEN '3'
WHEN ((ESTOQUELOTE.VALIDADE - CURRENT_DATE) > 0) and
(cores.CODIGO not in ('1'))
THEN '6'
ELSE '1' END
FROM inf
INNER join Produto on produto.codbarra = inf.codbarra
INNER JOIN CORES ON CORES.codigo = PRODUTO.codigo_cor
INNER JOIN ESTOQUELOTE ON ESTOQUELOTE.produto = inf.codprod
where (INF.DTEMISSAO >= '10.08.2014' and INF.DTEMISSAO <= '10.08.2015')
group by inf.codbarra, produto.CODBARRA, PRODUTO.DESCRICAO, ESTOQUELOTE.VALIDADE,PRODUTO.ESTATUAL, ESTOQUELOTE.QTDE,
ESTOQUELOTE.LOTE, produto.DTVENDA, cores.CODIGO)
Luis

Luis

Responder

Posts

13/08/2015

Luis

?????????????
Responder

Gostei + 0

18/08/2015

Luis

Obrigado entendi
Responder

Gostei + 0

18/08/2015

Alisson Santos

O problema pode estar se seu primeiro select.
Executa ele separado.
Responder

Gostei + 0

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

Aceitar