2013-03-21 26 views
0

假設我以前已經聲明瞭一個名爲#temp的表,它的計數爲NULL值,後來我想在腳本中更新該列,我該怎麼做?無法更新列窗口函數錯誤

count --- CAM 

1  201 
1  2 
1  2012 
2  20 

我有這將是更新語句:

更新#TEMP將[數] =((ROW_NUMBER()以上(由CAM降序順序)-1/3)+1

然而,它給了我下面的錯誤: 窗函數只能出現在SELECT或ORDER BY子句

我曾嘗試使用select語句很多不同的方式,但沒有運氣!任何幫助

回答

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是唯一的,這將工作。

+0

感謝工作像一個魅力:) – 2013-03-21 01:35:11