0

假设我之前声明了一个名为 #temp 的表,它的值是 NULL,后来我想在我的脚本中更新该列,我该怎么做?

count --- CAM 

 1        201 
 1        2
 1        2012
 2        20

我有更新声明,它将是:

更新#temp set [count]= ((ROW_NUMBER() over(order by CAM desc)-1/3)+1

但是,它给了我以下错误:窗口函数只能出现在 SELECT 或 ORDER BY 子句中。

我使用 select 语句尝试了许多不同的方法,但没有运气!对此有什么帮助吗?

4

1 回答 1

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是唯一的,这将起作用。

于 2013-03-21T01:10:50.473 回答