0
주어진 ID를 가진 행을 포함하는 페이지 번호 (페이지 목록에서)를 확인하는 방법이 있습니까? 당신이 ORDER BY는별로 정렬하는지에 대한 정확한 확인하면이 같은페이지 번호를 페이지 목록에서 찾으십시오.
주어진 ID를 가진 행을 포함하는 페이지 번호 (페이지 목록에서)를 확인하는 방법이 있습니까? 당신이 ORDER BY는별로 정렬하는지에 대한 정확한 확인하면이 같은페이지 번호를 페이지 목록에서 찾으십시오.
뭔가 T-SQL에서 작동합니다 :
DECLARE @RowId INT = 55
, @PageSize INT = 10;
DECLARE @Data TABLE
(
Id INT IDENTITY(1,1)
, Value INT
)
INSERT @Data
SELECT
CAST(V.number AS INT)
FROM master..spt_values V
WHERE V.[type] = 'P'
AND CAST(V.number AS INT) BETWEEN 1 AND 100
;WITH RankedData AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY D.Value) AS Row
, D.Id
FROM
@Data D
)
SELECT
(SELECT Row FROM RankedData WHERE Id = @RowId)/@PageSize
declare @Foo as table (FooId int identity, Bar varchar(16))
insert into @Foo (Bar) values ('this'), ('is'), ('some'), ('sample'), ('data'), ('eh?')
declare @PageSize int = 3
-- Display the page numbers. Note that there must be an explicit order.
select FooId, Bar, (RN + @PageSize - 1)/@PageSize as Page
from (
select FooId, Bar, Row_Number() over (order by Bar) as RN
from @Foo
) as Janet
-- Retrieve a single page number based on a FooId .
select FooId, Bar, (RN + @PageSize - 1)/@PageSize as Page
from (
select FooId, Bar, Row_Number() over (order by Bar) as RN
from @Foo
) as Janet
where FooId = 3
우리는이 대답을 시도하는 훨씬 더 많은 정보를 필요로한다. 정확히 무엇을 원하니? – Lamak
페이징 된 목록은 SKIP 및 TAKE 문을 사용하여 부분적으로 정보를 검색한다는 것을 의미합니다. 예를 들어, 10 개의 페이지로 나뉘어 진 100 개의 행이 있습니다. 따라서 두 번째 페이지를 가져 오려면 다음과 같이 작성하십시오. SELECT * FROM rows SKIP ((PageNumber - 1) * 10) TAKE (10); // 여기서 PageNumber는 2입니다. 이제 ID가 55 인 행에 대해 페이지 번호가 무엇인지 알아야합니다. – cryss
T-SQL에는 SKIP 또는 TAKE이 없습니다. –