SQL2005에서이 쿼리에 오프셋을 적용하는 방법은 무엇입니까?SQL Server 2005 OFFSET
SELECT [name],[phone]
FROM (
SELECT *,Row_Number() Over (Partition By phone Order By (Select Null)) AS RN
FROM Table1
) AS T
Where RN = 1
감사
SQL2005에서이 쿼리에 오프셋을 적용하는 방법은 무엇입니까?SQL Server 2005 OFFSET
SELECT [name],[phone]
FROM (
SELECT *,Row_Number() Over (Partition By phone Order By (Select Null)) AS RN
FROM Table1
) AS T
Where RN = 1
감사
은 MSSQL 2005에서 지원되지 오프셋,하지만 당신은이 작업을 수행하려면 다음 approuch을 사용할 수 있습니다. 당신이 이전 이름으로 분류되었다 100-90에서 10 레코드를 선택하는 경우, 당신은 쿼리
;with data as
(
SELECT [name],[phone]
FROM (
SELECT *,Row_Number() Over (Partition By phone Order By (Select Null)) AS RN
FROM Table1
) AS T
Where RN = 1
)
select * from
( select top(10) * from
( select top(100) * from data order by name asc)
t1 order by name desc
) t2 order by name
레코드를 얻는 방법은 20에서 30까지입니다. –
변경 선택 상단 (100)을 선택하여 상단 (30) – fastobject
를 사용할 수 있습니다 나는 나 자신에 의해이 문제를 해결했다. 이 쿼리를 다른 열 이름과 함께 사용합니다.
with CTE as (
SELECT cFullname,BuyerPhoneNumber
FROM (
SELECT *,Row_Number() Over (Partition By BuyerPhoneNumber Order By (Select Null)) AS RN
FROM [Order]
) AS T
Where RN = 1
)
SELECT *
FROM (
SELECT Row_Number() OVER (ORDER BY cFullname ASC) AS CI_offset_row_number, *
FROM CTE
) AS A
WHERE A.CI_offset_row_number BETWEEN (21) AND (30)
'전화 번호 별 파티션 (Select Null) '특정 순서는 보장하지 않습니다. 따라서 'RN BETWEEN 10 AND 20'이'RN BETWEEN 20 AND 30'과 같은 행을 반환하지 않는다는 보장이 전혀 없습니다. –