假设我之前已经声明了一个名为#temp的表,它被计为NULL值,后来我想在我的脚本中更新该列,我该怎么做?
count --- CAM
1 201
1 2
1 2012
2 20
我有更新声明:
更新#temp set [count] =((ROW_NUMBER()over(CAM desc的顺序)-1/3)+1
但是,它给了我以下错误: 窗口函数只能出现在SELECT或ORDER BY子句中。
我尝试过使用select语句的许多不同方法,但没有运气!对此有何帮助?
答案 0 :(得分:2)
如果我理解你想要做什么,虽然count
在这里有一个奇怪的列名称给出了它似乎持有的数据:
WITH cte AS
(
SELECT (row_number() OVER(ORDER BY CAM DESC) - 1)/3 + 1 AS [count],
CAM
FROM #temp
)
UPDATE #temp
SET #temp.[count] = cte.[count]
FROM #temp
INNER JOIN cte ON #temp.CAM = cte.CAM
注意我还在括号外拉了/3
- 我相信这就是你想要的。
只要CAM
是唯一的,这将有效。