0
SQL 스크립트를 작성하려고하지만 예기치 않은 결과가 발생합니다. @TotalResults는 33 개의 레코드가 반환되었음을 알 때 레코드 6 개를 제공합니다.SQL에서 페이지 매기기 및 그룹화
SELECT @TotalPages = CEILING(COUNT(a.MemberID)/@PageSize), @TotalResults = COUNT(a.MemberID)
FROM Member a
INNER JOIN MemberBusinessCat b ON b.MemberID = a.MemberID
INNER JOIN BusinessCat c ON c.BusinessCatID = b.BusinessCatID
WHERE a.SystemID = @SystemID
AND c.CategoryName LIKE '%' + @SearchStr + '%'
AND (@ShowUnclaimed != 'N'
OR (a.Claimed = 'Y' AND a.SBIcon = 'N')
)
AND a.Viewable = 'Y'
GROUP BY a.MemberID, a.CreateDate, a.UserName, a.PrCity, a.MemberDisplayName, a.PrStateID, a.PrPhone, a.ShortDesc, a.PrCountryID;
WITH CoalPrepCategorySearch AS
(
SELECT ROW_NUMBER() OVER(ORDER BY a.MemberDisplayName ASC) AS RowNum,
a.MemberID,
a.UserName,
a.PrCity,
a.PrStateID,
a.PrPhone,
@TotalPages AS TotalPages,
a.MemberDisplayName AS DisplayName,
a.ShortDesc,
@TotalResults AS TotalResults,
a.PrCountryID
FROM Member a
INNER JOIN MemberBusinessCat b ON b.MemberID = a.MemberID
INNER JOIN BusinessCat c ON c.BusinessCatID = b.BusinessCatID
WHERE a.SystemID = @SystemID
AND c.CategoryName LIKE '%' + @SearchStr + '%'
AND (@ShowUnclaimed != 'N'
OR (a.Claimed = 'Y' AND a.SBIcon = 'N')
)
AND a.Viewable = 'Y'
GROUP BY a.MemberID, a.CreateDate, a.UserName, a.PrCity, a.MemberDisplayName, a.PrStateID, a.PrPhone, a.ShortDesc, a.PrCountryID
)
SELECT *
FROM CoalPrepCategorySearch
WHERE RowNum BETWEEN (@PG - 1) * @PageSize + 1 AND @PG * @PageSize
ORDER BY DisplayName ASC
내가이 그룹과 관련이 확신 :
여기에 코드입니다. 그렇다면 전체 결과를 어떻게 얻을 수 있습니까? 내가 도대체 뭘 잘못하고있는 겁니까?
미리 감사드립니다.