2013-03-21 1 views
0

이전에 NULL 값으로 개수가있는 #temp라는 테이블을 선언했다가 나중에 해당 스크립트에서 해당 열을 업데이트하고 싶다고 가정하면 어떻게됩니까?열 창 함수 오류를 업데이트 할 수 없음

count --- CAM 

1  201 
1  2 
1  2012 
2  20 

가 나는 것 업데이트 문이 있습니다

업데이트 설정 #temp을 [계산] = ((ROW_NUMBER() CAM 내림차순으로 (순서) -1/3)를 통해 1

윈도우 된 기능 만 BY 절 SELECT 또는 ORDER에 나타날 수있는 내가 선택 문을 사용하여 여러 가지 방법을 시도했지만 운이! 이것에 어떤 도움

:.

그러나, 그것은 나에게 다음과 같은 오류를 준다?

답변

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

감사합니다. –

관련 문제