SQL Server存储过程更新错误

时间:2016-10-25 08:00:34

标签: sql sql-server stored-procedures subquery

我有两张桌子

*{ margin : 0; padding : 0; } body{ background-color: grey; } .outer{ width : 200px; height : 200px; overflow : hidden; border-radius : 50%; background-color : black; margin : auto; } img{ position:absolute; z-index : -1; margin-left : -25%; }

Funddetails

FundId Fund Industry State Column1 ----------------------------------------- 1 1 2 NSW 2 1 2 ACT 3 1 2 VIC 4 1 2 NSW 5 1 2 ACT 6 1 2 VIC 7 1 2 NSW 8 1 2 ACT 9 1 2 VIC

Industrydetail

我想编写一个存储过程,它将更新IndustryId price State ----------------------- 1 12 NSW 2 1 Vic 3 3 ACT 表的Column1

funddetails计算为

Column1

如果该值小于或等于-5,则返回50 else 100

这是我的存储过程:

funddetails.Industry * Industrydetail.price - Avg of funddetails.Industry per state

我收到错误

  

窗口函数只能出现在SELECT或ORDER BY子句中。

我是SQL Server新手。我做错了什么,或者有什么更好的方法来做我想做的事情?

任何帮助将不胜感激。提前致谢

2 个答案:

答案 0 :(得分:0)

您可以如下所示:

/~projectname/lng

答案 1 :(得分:0)

修改您的代码,如下所示

UPDATE FundDetails
SET Column1= CASE 
 WHEN (funddetails.Industry*Industrydetails.price-
  (select Avg(funddetails.Industry)  OVER (partition BY FundDetails.state)) 
 <= -5 THEN '50' ELSE '100' 
 END
FROM FundDetails 
INNER JOIN Industrydetails  on FundDetails.State = Industrydetails.State