不能放在哪里查询

时间:2015-02-21 11:34:57

标签: sql-server

我正在尝试执行此任务:

  

查找每个客户的所有订单总额,按客户排序   从最大金额到最小金额的价值,并显示客户从40到   结果中的50个位置。只有一个查询。

我在Northwind示例数据库上进行培训。我的问题:

;WITH MyCte AS
(
    SELECT 
        ROW_NUMBER() OVER (ORDER BY SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)) DESC) Number
        , O.CustomerID
        , SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)) TotalAmount     
    FROM [Order Details] OD
    RIGHT JOIN Orders O ON OD.OrderID = O.OrderID
    GROUP BY CustomerID
    ORDER BY TotalAmount DESC
)
SELECT 
    Number
    , CustomerID
    , TotalAmount   
FROM MyCte
WHERE Number BETWEEN 40 AND 50

但这不起作用。愿有人帮我把" Where"正确地对这个查询?

1 个答案:

答案 0 :(得分:0)

;WITH MyCte AS
(
    SELECT 
        ROW_NUMBER() OVER (ORDER BY SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)) DESC) Number
        , O.CustomerID
        , SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)) TotalAmount     
    FROM [Order Details] OD
    RIGHT JOIN Orders O ON OD.OrderID = O.OrderID
    GROUP BY CustomerID 
)
SELECT 
    Number
    , CustomerID
    , TotalAmount   
FROM MyCte
WHERE Number >= 40 and Number <= 50

主要问题出现在MyCTE表中的Order By中。此查询将有效。