2012-08-24 26 views
0

下面的ORDER BY子句導致錯誤。我怎樣才能引用TotalPrice列ORDER BY條款:無法通過外部訂單引用子查詢列

SELECT * FROM 
(

SELECT O.OrderID, 
     (SELECT SUM(SubTotal) FROM DB_OrderDetails OD WHERE OD.OrderID = O.OrderID) AS TotalPrice, 
     ROW_NUMBER() OVER (ORDER BY TotalPrice) AS RowNum 

    FROM DB_Orders O 

) Orders 
+0

你能不能也expla用英語表達你想要做什麼?看起來,一件簡單的事情變得複雜了。 – Farhan

回答

1

如何這一點:

select 
    o.orderID, 
    sum(od.SubTotal) as TotalPrice, 
    row_number() over (order by sum(od.SubTotal)) as RowNum 
from DB_Orders o 
join DB_OrderDetails od 
    on o.OrderID = od.OrderID 
group by o.OrderID 

這裏是例子:SQL Fiddle

+0

謝謝穆罕默德,它工作完美... – B10

3

無法通過它的名字在同一子查詢中引用它,你中堂做外部查詢:

SELECT orders.*, 
     ROW_NUMBER() OVER (ORDER BY TotalPrice) AS RowNum FROM 
(
    SELECT O.OrderID, 
     (SELECT SUM(SubTotal) FROM DB_OrderDetails OD 
     WHERE OD.OrderID = O.OrderID) AS TotalPrice 
    FROM DB_Orders O 
) Orders