我有两张桌子
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
计算为
funddetails.Industry * Industrydetail.price - Avg of funddetails.Industry per state
如果该值小于或等于-5,则返回50,否则返回100
这是我的存储过程:
UPDATE FundDetails
SET Column1 =
CASE
WHEN (funddetails.Industry * Industrydetail.price-Avg(funddetails.Industry) OVER (partition BY t2.state )) <= -5
THEN '50'
ELSE '100'
END
FROM FundDetails t2
INNER JOIN IndustryDetails t1 ON t1.State = t2.State
我收到一个错误
窗口函数只能出现在SELECT或ORDER BY子句中。
我是SQL Server的新手。我在做什么错,还是有更好的方法来做我想做的事情?
任何帮助,将不胜感激。提前致谢
如下修改您的代码
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句