我是數據庫領域的新手,我剛開始學習並發現SQLZoo網站非常有幫助。 我在AdventureWorks數據庫中遇到了這個問題。SQLZoo難題#12 AdventureWorks Assessments
http://sqlzoo.net/wiki/AdventureWorks_hard_questions
12.For每個訂單顯示的SalesOrderID和小計計算三種方式: A)從的SalesOrderHeader B)OrderQty *單價 的C和)OrderQty總和* ListPrice
對於某種原因,我無法弄清楚這一點。任何幫助是極大的讚賞。
這是我的查詢:
SELECT
A.SalesOrderID,
A.SubTotal AS SubTotalA,
B.SubtotalB,
C.SubtotalC
FROM SalesOrderHeader A
JOIN
(
SELECT SUM(sodB.OrderQty*sodB.UnitPrice) AS SubTotalB
FROM SalesOrderDetail sodB
JOIN ProductAW pawB
ON pawB.ProductID=sodB.ProductID
GROUP BY sodB.SalesOrderID
) AS B
JOIN
(
SELECT SUM(sodC.OrderQty*pawC.ListPrice) AS SubTotalC
FROM SalesOrderDetail sodC
JOIN ProductAW pawC
ON pawC.ProductID=sodC.ProductID
GROUP BY sodC.SalesOrderID
) AS C
出於某種原因,當我運行任何SELECT語句B或C單獨外JOIN我得到我所期待的結果,但是當我把那裏面JOIN爲SubTotalB所有值或小計C重複顯示與第一行值相同的結果。
SELECT SUM(sodC.OrderQty*pawC.ListPrice) AS SubTotalC
FROM SalesOrderDetail sodC
JOIN ProductAW pawC
ON pawC.ProductID=sodC.ProductID
GROUP BY sodC.SalesOrderID
OR
SELECT SUM(sodC.OrderQty*pawC.ListPrice) AS SubTotalC
FROM SalesOrderDetail sodC
JOIN ProductAW pawC
ON pawC.ProductID=sodC.ProductID
GROUP BY sodC.SalesOrderID
在您指出外部查詢缺少ON子句之後,我也意識到B和C查詢缺少對其SalesOrderID的引用。我在您的解決方案中添加了sob.SalesOrderID&sodC.SalesOrderID,現在它可以工作!非常感謝 – dePaula