2014-07-14 3 views
0

다음 테이블과 같은 계산 열을 어떻게 만들 수 있습니까 ?? myComputedColumn에서SQL 서버 2008 테이블의 계산 열

ID Group Name Age myComputedColumn 
----------------------------------- 
1 001 FF 28 00 
2 001 GG 29 01 
3 001 II 35 02 
4 002 AA 15 00 
5 001 UU 26 03 
6 002 BB 17 01 
7 002 CC 15 02 

, 나는 값이 '24'까지 '00'에서 시작하는 행에 도달 '24'후, 다음은 '00' '24'까지입니다 새 번호를 생성합니다 싶은

이렇게 계산 된 열은 어떻게 만듭니 까? 아니면 새 레코드를 삽입 할 때 함수를 만들어야합니까?

감사합니다.

+0

을 계산 :

right()/0 트릭을 추가가 잘 작동, 문자로이를 얻으려면? –

+0

나는 당신을 얻지 못했습니다. – Haminteu

+0

이 작업을 수행하는 계산 열을 만들 수는 없지만 아래 예제 답변 에서처럼 선택할 수 있습니다. –

답변

4

를 사용하여 수행 할 수 있습니다, 또한 패딩 0을 원하는 :

select t.*, 
     (row_number() over (partition by [group] order by id) - 1) % 25 
from table t; 

% 연산자는 모듈러스 연산자입니다. 정수 나누기 후 나머지를 반환합니다. 계산 근거는 무엇 열을

select t.*, 
     right('0' + cast((row_number() over (partition by [group] order by id) - 1) % 25 as varchar(3)), 2) as ComputedColumn 
from table t; 
+0

마지막 구문을 시도했지만 compcolumn은 0, 1, 2, ff에서 시작합니다. 00, 01, 02, ff이어야합니다. – Haminteu

+0

@ 하 민테. . . 문자열 로직을 작동 시키려면'cast()'가 필요합니다. –

1

이 등등 1,2,3에서 statrting 가치를 제공합니다 ..

Select ID,Group,Name,Age, 
     ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY ID) as computedcolumn 
FROM tableName 
0에서 시작하려는 경우 1

Select ID,Group,Name,Age, 
     ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY ID) - 1 as computedcolumn 
FROM tableName 

확인에 의해 빼기, 변경할 수 있습니다

, 그래서 당신은 당신이 수는 0에서 24로 이동하려는 경우 다음 사용할 것, RIGHT()

Select ID,Group,Name,Age, 
     RIGHT('0' + ROW_NUMBER() OVER (PARTITION BY [Group] ORDER BY ID) - 1 , 2) as computedcolumn 
FROM tableName 
+0

그것은 SQL Server 2012 구문입니까? – Haminteu

+0

그것은 2005+와 호환됩니다. 즉, 2005 년 이후 모든 버전 2005 년 5 월, 2005 년 8 월 12 일, –

+0

마지막 구문에서 시도했습니다.하지만 계산 된 결과는 0, 1, 2, 3, ff . 00, 01, 02, 03, ff이어야합니다. – Haminteu