Tôi cố gắng để trở lại một trang dữ liệu và cũng chèo đếm của tất cả các dữ liệu trong một thủ tục lưu trữ mà trông giống như sau:CTE, ROW_NUMBER và ROWCOUNT
WITH Props AS
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY PropertyID) AS RowNumber
FROM Property
WHERE PropertyType = @PropertyType AND ...
)
SELECT * FROM Props
WHERE RowNumber BETWEEN ((@PageNumber - 1) * @PageSize) + 1 AND (@PageNumber * @PageSize);
Tôi không thể trả lại số hàng (số hàng cao nhất).
Tôi biết điều này đã được thảo luận (Tôi đã nhìn thấy điều này: Efficient way of getting @@rowcount from a query using row_number) nhưng khi tôi thêm COUNT (x) OVER (PARTITION BY 1) trong việc thực hiện phân hủy CTE và các truy vấn trên mà thường mất không mất thời gian để thực thi. Tôi nghĩ đó là vì số lượng được tính cho mỗi hàng? Có vẻ như tôi không thể tái sử dụng CTE trong một truy vấn khác. Bảng đạo cụ có 100k hồ sơ, CTE trả về 5k hồ sơ.
nên gắn lại thẻ như một câu hỏi SQL Server. Tôi đã làm điều đó cho bạn, nhưng bạn chỉ được phép 5 thẻ, và tôi không biết bạn muốn loại bỏ cái gì. –