Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 重复的总行数超过_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 重复的总行数超过

Sql 重复的总行数超过,sql,sql-server,tsql,Sql,Sql Server,Tsql,我对SQL Server使用“COUNT(*)OVER()”函数来获取分页的总行数。我使用distinct关键字,但它是获取重复行的行数 总行数通常为772,但查询返回1024,因为存在重复行 SELECT DISTINCT ss.ProdSmartId, p.ProdId, ProdName, TotalRowCount = COUNT(*) OVER() FROM ProdSmartSorts ss JOIN dbo.Products p

我对SQL Server使用“COUNT(*)OVER()”函数来获取分页的总行数。我使用distinct关键字,但它是获取重复行的行数

总行数通常为772,但查询返回1024,因为存在重复行

SELECT DISTINCT 
    ss.ProdSmartId,
    p.ProdId,
    ProdName,
    TotalRowCount = COUNT(*) OVER()
FROM 
    ProdSmartSorts ss
JOIN 
    dbo.Products p ON ss.ProdId = p.ProdId AND p.IsDeleted = 0 AND p.ProdStatus = 1
JOIN 
    Users u ON p.UserId = u.Id
LEFT JOIN 
    Pictures pic ON pic.ProdId = p.ProdId AND pic.IsCover = 1
ORDER BY 
    ss.ProdSmartId 
    OFFSET 1 ROWS FETCH NEXT 10000 ROWS ONLY
您的
计数(*)
不适用于返回的不同值

declare @table table (i int)
insert into @table
values
(1),
(1),
(1),
(1)

select distinct count(*) over() from @table
这就是为什么它们被称为窗口函数。然后,窗口函数为窗口中的每一行计算一个值。由于您没有使用类似于
partitionby
row或range
子句的东西来限制窗口中的行,因此它将对所有行进行计数。但是,您可以使用子查询或其他函数。这取决于你想如何处理它