[sql] 테이블 조회 결과를 특정 컬럼 기준으로 정렬한 후 위, 아래로 이전/다음 행 조회하는 방법

우선, 아래와 같이 ROW_NUMBER() 함수를 사용하여 특정 컬럼을 기준으로 결과를 정렬할 수 있습니다.

SELECT 
    column1, 
    column2, 
    ROW_NUMBER() OVER (ORDER BY column_to_sort) AS row_num
FROM 
    your_table

위 쿼리에서 column_to_sort은 결과를 기준으로 정렬하고자 하는 컬럼을 나타냅니다. 그 다음으로, 서브쿼리를 사용하여 정렬된 결과에서 이전 행이나 다음 행을 조회할 수 있습니다.

아래는 이전 행 조회의 예시입니다.

SELECT 
    t1.column1 AS current_column1, 
    t1.column2 AS current_column2, 
    t2.column1 AS previous_column1, 
    t2.column2 AS previous_column2
FROM 
    (
        SELECT 
            column1, 
            column2,
            ROW_NUMBER() OVER (ORDER BY column_to_sort) AS row_num
        FROM 
            your_table
    ) t1
LEFT JOIN 
    (
        SELECT 
            column1, 
            column2,
            ROW_NUMBER() OVER (ORDER BY column_to_sort) AS row_num
        FROM 
            your_table
    ) t2
ON 
    t1.row_num = t2.row_num + 1

이와 유사하게 다음 행을 조회하려면, t1.row_num = t2.row_num - 1과 같이 조인할 수 있습니다.

이처럼, ROW_NUMBER() 함수와 서브쿼리를 결합하여 정렬된 결과에서 이전/다음 행을 조회할 수 있습니다.