我有一個查詢,將使用UNION ALL將2個表中的結果返回爲1,這些查詢全部按我需要的方式工作。不過,我需要在返回的數據集上運行GROUP BY和ORDER BY,但是我收到很多錯誤,我不知道如何解決它。SQL GROUP BY的子查詢
這裏是我的查詢:
SELECT ProductID, Quantity
FROM BasketItems
UNION ALL
SELECT ProductID, Quantity
FROM OrderItems
這將返回一個結果集,如本:
ProductID Quantity
15 2
20 2
15 1
8 5
5 1
然後我想在ProductID
場運行GROUP BY
,然後最後一個ORDER BY DESC
上Quantity
字段。所以在最終的輸出,這個特定的結果集將最終導致這樣:
如前所述:
ProductID
8
15
20
5
然後我就可以在這個結果集,因爲我通常做
EDIT運行查詢上面,但也許不夠暗示的是,我將需要對返回的結果運行查詢,這是不工作的,因爲您不能對一組結果具有ORDER BY子句運行查詢(就我從錯誤列表)
如果你想對這個問題的詳細信息,那就是:
從這個結果集,我想要得到的產品從產品表,他們涉及到
SELECT * FROM Products WHERE ID IN (
SELECT ProductID
FROM
(
SELECT ProductID, Quantity
FROM BasketItems
UNION ALL
SELECT ProductID, Quantity
FROM OrderItems
) v
GROUP BY ProductID
ORDER BY SUM(Quantity) DESC
)
不過,我得到這個錯誤:除非指定了TOP,OFFSET或FOR XML,否則ORDER BY子句在視圖,內聯函數,派生表,子查詢和公用表表達式中無效。
的產品需要的順序,他們在子查詢返回的(按數量)
在最終的結果集,你只需要產品ID,還是你仍想量以顯示? – Taryn 2012-08-08 10:39:44
@bluefeet我只需要最終結果集中的ProductID – JakeJ 2012-08-08 10:40:40
引入這個新表'產品'有點改變了這個問題 - 將需要編輯我的答案 – whytheq 2012-08-08 11:09:15