2017-12-24 27 views
3

세 개의 열로 SQL Server에서 테이블을 만들고 있습니다. 처음 두 열이 하나씩 카운트를 증가 시키길 원합니다. 행이 삽입 될 때 자동으로 1 씩 증가시키는 ID 열로 첫 번째 열을 사용했습니다. 두 번째 열 (SQL Server에서 테이블 당 두 개의 ID 열을 허용하지 않음)에서도 동일한 작업을 수행하려고했습니다. 시퀀스을 사용하여 다른 방법으로 전자를 찾았지만 SQL Server 2008을 사용하고 있기 때문에이 기능이 없습니다.SQL Server 2008에서 두 개의 ID 열

내 작업을 어떻게 수행 할 수 있습니까?

보고서에서 첫 번째 ID 열을 사용 중이고 일부 계산이 완료되면 다시 설정합니다. 예를 들어 20에 도달하면 1 (편집 됨)으로 재설정됩니다. 두 번째 증분 열은 데이터를 정렬하는 데 사용되며 다시 설정하지 않습니다.

create table tblPersons 
(
    IDCol int primary key identity(1,1), 
    SortCol int primary key identity(1,1), 
    Name nvarchar(50) 
) 

PS : 나는 내 코드에서 20로 IDCol를 재설정 할 때 때문에 나는 SortColIDCol의 값을 복사 할 수 없습니다, 같은 값을 복사합니다 SortCol은 (대신은 21,22,23 등을 계속한다 on)

답변

3

항상 두 개의 열을 동시에 늘리려는 경우 한 가지 자동 증분 열만 사용하면되지만 두 번째 값으로는 20으로 나눈 나머지 카운터를 사용하면됩니다.

CREATE TABLE tblPersons (
    IDCol int PRIMARY KEY IDENTITY(1,1), 
    Name nvarchar(50) 
) 

SELECT 
    IDCol, 
    IDCol % 20 AS SortCol -- this "resets" to zero upon reaching 20 
FROM tblPersons; 
+0

감사를 사용할 수 있습니다. IDCol 증가는 20 및 20에서 IDCol 열이 0으로 재설정 될 때까지 제대로 작동합니다.이 문제를 해결하고 0을 피할 수있는 방법에 대한 힌트가 있습니다 (1에서 20까지 반복하여 증가시키고 싶습니다). 스냅 샷 링크는 다음과 같습니다. 아래에 첨부되어 있습니다. 다시 한 번 감사드립니다 스냅 샷 링크 : http://prntscr.com/hrq5zz – Rizwan606

+0

@ Rizwan606 답변을 업데이트했습니다. 1에서 19 사이의 수식으로'(IdCol % 19) +1 '을 사용하고, 20을 치면 카운터가 1로 재설정됩니다. –

+1

'row_number() '와 같은 창 함수를 사용할 수도 있습니다. – Charleh

1

대체 솔루션으로, 당신은 당신의 솔루션은 내가 필요 정확히 무엇이며, 귀하의 회신 @ 팀에 대한 Computed Column

create table tblPersons 
(
    SortCol int primary key identity(1,1), 
    IDCol AS CASE WHEN (SortCol % 20) = 0 THEN 20 ELSE (SortCol % 20) END , 
    Name nvarchar(50) 
) 
+0

답장을 보내 주셔서 감사합니다 @Serkan, IDCol 증가는 20 번과 20 번에 도달 할 때까지 잘 작동합니다. IDCol 열은 0으로 재설정됩니다.이 문제를 해결하고 0을 피할 수있는 방법에 대한 모든 힌트 (1에서 증가 시키길 원합니다. ~ 20 회 반복) 스냅 샷 링크도 아래에 첨부되어 있습니다. 다시 한 번 감사드립니다 스냅 샷 링크 : prntscr.com/hrq5zz – Rizwan606

+0

@ Rizwan606 업데이트했습니다. –