Usuário com melhor resposta
Update no Codigo SQL abaixo

Pergunta
-
Necessito zerar uma determinada variável no código abaixo e o retorno é :
(10 linha(s) afetadas)
Mensagem 208, Nível 16, Estado 1, Linha 37
Nome de objeto 'AC' inválido.
Peço ajuda para solucionar o problema.
Agradeço antecipadamente a atenção dispensada.
Newton Costa
;with
Acum_Compra as (
SELECT [prazo-compra].[it-codigo], Sum([prazo-compra].[quant-saldo]) as [saldo]
from [prazo-compra]
INNER JOIN [ordem-compra]
ON [prazo-compra].[numero-ordem] = [ordem-compra].[numero-ordem] AND [prazo-compra].[it-codigo] = [ordem-compra].[it-codigo]
AND [ordem-compra].[num-pedido] > 0
WHERE
[prazo-compra].situacao >= 2 and [prazo-compra].situacao <= 3
GROUP BY [prazo-compra].[it-codigo]
)
SELECT
[saldo-estoq].[it-codigo]
,[saldo-estoq].[qtidade-atu] as saldo_atu
,[item].[desc-item]
,[item].[codigo-refer]
,depos.depos1
,IsNull([AC].[saldo], 0) as [saldo-compras]
FROM [saldo-estoq]
INNER JOIN item
ON [saldo-estoq].[it-codigo] = item.[it-codigo]
INNER JOIN depos
ON [saldo-estoq].[cod-depos] = depos.[co-depos]
LEFT JOIN Acum_Compra as AC
ON [saldo-estoq].[it-codigo] = AC.[it-codigo]
WHERE [item].[cod-obsoleto] = 1
AND [item].[it-codigo] like 'seahddn' +'%'
AND ([saldo-estoq].[qtidade-atu] > 0 )
ORDER BY depos.depos1 desc;update [AC] set [saldo-compras] = 0 where depos1 = 'rma' (inclui este comando para zerar a variável)
Respostas
-
Newton,
Em qual parte do código você esta declarando a sua variável?
Você esta tentando fazer o Update de AC? Mas se eu entendi este AC é um alias da sua CTE Acum_Compra?
Se for isso mesmo, realmente não vai rolar, pois a CTE já esta sendo utilizada na seu Select.
Acredito que neste caso, você terá que fazer um Update From, utilizando a sua table e a sua CTE no Update, veja se este exemplo ajuda:
USE AdventureWorks2012; GO WITH Parts(AssemblyID, ComponentID, PerAssemblyQty, EndDate, ComponentLevel) AS ( SELECT b.ProductAssemblyID, b.ComponentID, b.PerAssemblyQty, b.EndDate, 0 AS ComponentLevel FROM Production.BillOfMaterials AS b WHERE b.ProductAssemblyID = 800 AND b.EndDate IS NULL UNION ALL SELECT bom.ProductAssemblyID, bom.ComponentID, p.PerAssemblyQty, bom.EndDate, ComponentLevel + 1 FROM Production.BillOfMaterials AS bom INNER JOIN Parts AS p ON bom.ProductAssemblyID = p.ComponentID AND bom.EndDate IS NULL ) UPDATE Production.BillOfMaterials SET PerAssemblyQty = c.PerAssemblyQty * 2 FROM Production.BillOfMaterials AS c JOIN Parts AS d ON c.ProductAssemblyID = d.AssemblyID WHERE d.ComponentLevel = 0;
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
- Editado Junior Galvão - MVPMVP quinta-feira, 3 de julho de 2014 14:10
- Marcado como Resposta Newton Costa-BA sexta-feira, 4 de julho de 2014 15:12
Todas as Respostas
-
Newton,
Em qual parte do código você esta declarando a sua variável?
Você esta tentando fazer o Update de AC? Mas se eu entendi este AC é um alias da sua CTE Acum_Compra?
Se for isso mesmo, realmente não vai rolar, pois a CTE já esta sendo utilizada na seu Select.
Acredito que neste caso, você terá que fazer um Update From, utilizando a sua table e a sua CTE no Update, veja se este exemplo ajuda:
USE AdventureWorks2012; GO WITH Parts(AssemblyID, ComponentID, PerAssemblyQty, EndDate, ComponentLevel) AS ( SELECT b.ProductAssemblyID, b.ComponentID, b.PerAssemblyQty, b.EndDate, 0 AS ComponentLevel FROM Production.BillOfMaterials AS b WHERE b.ProductAssemblyID = 800 AND b.EndDate IS NULL UNION ALL SELECT bom.ProductAssemblyID, bom.ComponentID, p.PerAssemblyQty, bom.EndDate, ComponentLevel + 1 FROM Production.BillOfMaterials AS bom INNER JOIN Parts AS p ON bom.ProductAssemblyID = p.ComponentID AND bom.EndDate IS NULL ) UPDATE Production.BillOfMaterials SET PerAssemblyQty = c.PerAssemblyQty * 2 FROM Production.BillOfMaterials AS c JOIN Parts AS d ON c.ProductAssemblyID = d.AssemblyID WHERE d.ComponentLevel = 0;
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
- Editado Junior Galvão - MVPMVP quinta-feira, 3 de julho de 2014 14:10
- Marcado como Resposta Newton Costa-BA sexta-feira, 4 de julho de 2014 15:12
-