2013-03-25 36 views
1

请帮我看看下面:计数平均成本和柱条件的所有产品更新成本

我有表“产品”,具有以下任务:所有产品的计数平均成本和升级成本列“单价“如果用目前的价格条件>平均则-10%,如果< + 20%

顺便说需要使用变量

请帮我写剧本我使用SQL Server 2000

我写了财产以后像那样:

DECLARE @Average_cost 

SELECT @Average_cost = AVG(UnitPrice) FROM Products 

UPDATE Products 
SET UnitPrice = CASE WHEN UnitPrice > @Average_cost 
         THEN -10% 
         ELSE UnitPrice < @Average_cost 
         THEN + 20% 

谢谢大家以前。

回答

0
DECLARE @Average_cost 

SELECT @Average_cost = AVG(UnitPrice) FROM Products 
UPDATE Products 
SET UnitPrice = (CASE WHEN UnitPrice > @Average_cost 
         THEN UnitPrice - (UnitPrice * .1) 
         WHEN UnitPrice < @Average_cost 
         THEN UnitPrice + (UnitPrice * .2) 
         ELSE @Average_cost     
       END) 
+0

它说在'<' – user2206639 2013-03-25 11:10:00

+0

对不对。我的错。更新了我的答案。在'CASE'子句中,当我们给出一些条件而不是'ELSE'时,我们必须使用'WHEN'。 – 2013-03-25 11:23:46

+1

如果'UnitPrice'等于'@ Average_cost',则此语句将'null'分配给'UnitPrice'。 – 2013-03-25 11:27:07

0

试试这个

UPDATE Products 
SET UnitPrice = (CASE WHEN UnitPrice > @Average_cost 
         THEN UnitPrice - UnitPrice/10 
         WHEN UnitPrice < @Average_cost 
         THEN UnitPrice + UnitPrice/5      
       END)  
+0

-1一样,它应该是+ 20%。我认为它应该是'UnitPrice + UnitPrice/5'? – 2013-03-25 10:53:30

+0

它说'''附近的语法不正确' – user2206639 2013-03-25 11:09:26

+0

它应该像我已经描述到我的帖子 – user2206639 2013-03-25 11:11:13