0

NULL 値としてカウントされる #temp というテーブルを以前に宣言したと仮定し、後でスクリプトでその列を更新したいとしたら、どうすればよいでしょうか?

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ステートメントを使用してさまざまな方法を試しましたが、うまくいきません!. これについて何か助けはありますか?

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 に答える