source

MSSQL 증분 정수 열이 있는 문 선택...일반적이지 않은

manycodes 2023. 7. 30. 17:56
반응형

MSSQL 증분 정수 열이 있는 문 선택...일반적이지 않은

가능하면 임의 테이블에서 값을 반환하고 첫 번째 행에 대해 값 = 1, 두 번째 행에 대해 2 등의 증분 정수 열도 반환하는 t-sql 쿼리가 필요합니다.

이 열은 실제로 어떤 테이블에도 존재하지 않으며, ORDER BY 절이 테이블의 행을 정렬할 수 있으므로 항상 완벽한 모양으로 증분 행을 사용해야 합니다.

솔루션은 SQL Server 2000에서 실행되어야 합니다.

SQL 2005 이상의 경우

SELECT ROW_NUMBER() OVER( ORDER BY SomeColumn ) AS 'rownumber',*
    FROM YourTable

2000년을 위해 당신은 이것과 같은 것을 해야 합니다.

SELECT IDENTITY(INT, 1,1) AS Rank ,VALUE
INTO #Ranks FROM YourTable WHERE 1=0

INSERT INTO #Ranks
SELECT SomeColumn  FROM YourTable
ORDER BY SomeColumn 

SELECT * FROM #Ranks
Order By Ranks

여기에서 행 번호 참조

여기서 사용자 지정 번호로 시작하여 증분할 수 있습니다. 예를 들어, 각 결제에 대해 수표 번호를 추가하려는 경우:

select @StartChequeNumber = 3446;
SELECT 
((ROW_NUMBER() OVER(ORDER BY AnyColumn)) + @StartChequeNumber ) AS 'ChequeNumber'
,* FROM YourTable

각 행에 대한 올바른 수표 번호를 제공합니다.

ROW_NUMBER() 시도

http://msdn.microsoft.com/en-us/library/ms186734.aspx

예:

SELECT
  col1,
  col2,
  ROW_NUMBER() OVER (ORDER BY col1) AS rownum
FROM tbl

보기 흉하고 성능이 좋지 않지만, 기술적으로 이것은 적어도 하나의 고유한 필드가 있는 모든 테이블에서 작동하며 SQL 2000에서 작동합니다.

SELECT (SELECT COUNT(*) FROM myTable T1 WHERE T1.UniqueField<=T2.UniqueField) as RowNum, T2.OtherField
FROM myTable T2
ORDER By T2.UniqueField

참고: 이 방법을 사용하여 외부 SELECT에 WHERE 절을 추가할 경우, 숫자를 연속적으로 사용하려면 내부 SELECT에도 추가해야 합니다.

언급URL : https://stackoverflow.com/questions/534240/mssql-select-statement-with-incremental-integer-column-not-from-a-table

반응형