我选择的记录可能包含重复项,我需要能够为不同的结果集分页。SQL总行数(DENSE_RANK/DISTINCT)
目前,我有以下的(简化)查询:
SELECT pagiWrapper.* FROM (
SELECT DISTINCT alias.id
, alias.name
, DENSE_RANK() OVER (ORDER BY alias.name ASC) AS 'paginationRowNo'
, COUNT(*) OVER(PARTITION BY 1) AS 'paginationTotalRows'
FROM MyTable alias
LEFT JOIN MyTableTwo alias2 ON alias2.id = alias.id
WHERE (/* condition */)
) pagiWrapper WHERE pagiWrapper.paginationRowNo > 0 AND pagiWrapper.paginationRowNo <= 15
有10个记录在这个结果集,但是DISTINCT
正确返回3,和DENSE_RANK
正确标注他们1
,2
和3
我的问题是paginationTotalRows
仍然返回10(原始重复包括)结果集计数,我如何修改查询以便paginationTotalRows
返回正确的数量?
请问哪个版本的SQL Server正在使用? – 2014-09-22 09:02:56
@Used_By_Already,2005 – epoch 2014-09-22 09:03:35
我的确在为此建议row_number(),请查看 – 2014-09-22 09:13:32