ROW_NUMBER 计数返回无效结果

我玩

我对 SQL Server 很陌生,并试图提高自己。我准备了一个声明来获取被取消的客户(customerCancel 为真)

通常,当我计算取消的客户总数时,总数为 1050。

我想要做的是显示前100个用户,但是当我运行下面的查询时,我只得到38个,当我手动增加RowNumber时,结果增加但与实际结果不一样。我将使用此查询进行分页。

我的查询:

SELECT
   COUNT(*) OVER() TotalRowCount,
   ID, customerNo, customerName, customerSurname, customerTitle, customerUnitList, customerTotalList 
FROM
   (SELECT
        ROW_NUMBER() OVER(ORDER BY m.ID) RowNumber, 
        COUNT(*) OVER() TotalRowCount,
        m.ID, m.customerNo, m.customerName, m.customerSurname, m.customerTitle,
        (SELECT COUNT(f.ID) 
         FROM Invoices f 
         WHERE f.Paid = 0 
           AND f.custumerCancel = 0 
           AND f.customerID = m.ID) AS customerUnitList,
        COALESCE((SELECT SUM(f.Total) AS InvoiceNo
                  FROM Invoices f 
                  WHERE f.Paid = 0 
                    AND f.custumerCancel = 0 
                    AND f.customerID = m.ID), 0) AS customerTotalList 
    FROM
        Customers m) flist 
WHERE
   customerTotalList > 0 
   AND RowNumber between 1 AND 100

我尝试了几种方法来修复它,但没有运气。

安森·阿里卡特

试试这个查询

SELECT * FROM   (SELECT Count(*) OVER()   TotalRowCount, 
               Row_number() 
                 OVER(ORDER BY id) RowNumber, 
               id, 
               customerno, 
               customername, 
               customersurname, 
               customertitle, 
               customerunitlist, 
               customertotallist 
        FROM   (SELECT m.id, 
                       m.customerno, 
                       m.customername, 
                       m.customersurname, 
                       m.customertitle, 
                       (SELECT Count(f.id) 
                        FROM   invoices f 
                        WHERE  f.paid = 0 
                               AND f.custumercancel = 0 
                               AND f.customerid = m.id)            AS 
                       customerUnitList, 
                       Isnull((SELECT Sum(f.total) AS InvoiceNo 
                               FROM   invoices f 
                               WHERE  f.paid = 0 
                                      AND f.custumercancel = 0 
                                      AND f.customerid = m.id), 0) AS 
                       customerTotalList 
                FROM   customers m) flist 
        WHERE  customertotallist > 0) x 
WHERE  rownumber BETWEEN 1 AND 100 

只有在应用所有自定义过滤器之后,您才应该应用行号过滤器进行分页。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用row_number()的无效列名OVER(PARTITION BY)

来自分类Dev

ROW_NUMBER()OVER(PARTITION BY)显示Group By子句的重复结果

来自分类Dev

使用ROW_NUMBER()时对结果进行排序

来自分类Dev

在ROW_NUMBER()上进行过滤正在更改结果

来自分类Dev

SQL Server:WHERE 子句中的 ROW_NUMBER() 返回“无效的列名”

来自分类Dev

如何返回带有排序数据库结果的ROW_NUMBER()?

来自分类Dev

如何使用限制使用ROW_NUMBER()从SQL Server返回的结果

来自分类Dev

如何返回带有排序的数据库结果的ROW_NUMBER()?

来自分类Dev

访问查询,在T-SQL中产生类似ROW_NUMBER()的结果

来自分类Dev

T-SQL:第一行的CTE row_number over()错误结果

来自分类Dev

访问查询,在T-SQL中生成类似ROW_NUMBER()的结果

来自分类Dev

使用 Row_Number 将对该表的选择结果插入表中

来自分类Dev

如何将 row_number() 结果存储在同一表列中

来自分类Dev

RANK 或 ROW_NUMBER 可以用于汇总的 Netsuite 搜索结果吗?

来自分类Dev

读取row_number

来自分类Dev

ROW_NUMBER 性能

来自分类Dev

SQL row_number() with conditions

来自分类Dev

ROW_NUMBER()基于日期

来自分类Dev

Row_number() that depends on condition

来自分类Dev

PostgreSQL中的Row_number()

来自分类Dev

ROW_NUMBER()基于日期

来自分类Dev

ROW_NUMBER(带参数)

来自分类Dev

ROW_NUMBER()SQL错误

来自分类Dev

访问 - row_number 函数?

来自分类Dev

而不是 ROW_NUMBER ORDER BY

来自分类Dev

Row_Number 和分区

来自分类Dev

Row_number 和 union

来自分类Dev

使用日期索引优化ROW_NUMBER()

来自分类Dev

根据row_number过滤RDD