簡體   English   中英

查詢每個項目的金額大於100的訂單的總金額

[英]Query Total Amounts for Orders where the amount of each item was greater than >100

使用SQL Server 2005上的以下兩個表,我如何編寫查詢以返回First_Name,Last_Name,Order_Date和訂單總金額,其中任何訂單的任何訂單行金額(OD_Amount)都大於100。

命令

Order_ID
First_Name
Last_Name
Order_Date

訂單詳細信息

Order_Detail_ID
Order_ID
OD_Item_No
OD_Amount
SELECT
    O.first_name,
    O.last_name,
    O.order_date,
    SUM(OD.amount)
FROM
    Orders O
INNER JOIN Order_Details OD ON OD.order_id = O.order_id
WHERE EXISTS
(
    SELECT
    FROM
        Order_Details OD2
    WHERE
        OD2.order_id = O.order_id AND
        OD2.amount > 100
)
GROUP BY
    O.first_name,
    O.last_name,
    O.order_date

這樣的事可能嗎?

Select 
  t1.Order_ID, First_Name, Last_Name, Order_Date, Sum(OD_Amount) as Order_Total
From
  Orders t1
Inner Join
  Order_Details t2
    on t1.Order_ID = t2.Order_ID
Where 
  t1.Order_Id in (Select Distinct Order_Id from Order_Details where OD_Amount > 100)
Group By
  t1.Order_ID, First_Name, Last_Name, Order_Date

這是當您希望每個明細單大於100

SELECT t1.First_Name, t1.Last_Name, t1.Order_Date, SUM(t2.OD_Amount) AS 'totalAmount'
FROM Orders AS t1
JOIN Order_Details AS t2 ON t1.Order_ID = t2.Order_ID
WHERE t2.OD_Amount > 100
GROUP BY t1.First_Name, t1.Last_Name, t1.Order_Date

如果您希望每個訂單本身都超過100,則:

SELECT t1.First_Name, t1.Last_Name, t1.Order_Date, SUM(t2.OD_Amount) AS 'totalAmount'
FROM Orders AS t1
JOIN Order_Details AS t2 ON t1.Order_ID = t2.Order_ID    
GROUP BY t1.First_Name, t1.Last_Name, t1.Order_Date
HAVING SUM(t2.OD_Amount) > 100

我相信這就是你要找的東西:

SELECT o.First_Name, o.Last_Name, sum(od.OD_Amount) As Order_Total_Amount FROM Order_Details AS od, Orders AS o WHERE o.Order_ID = od.Order_ID AND o.OrderID IN (SELECT Order_ID FROM Order_Details WHERE OD_Amount > 100) GROUP BY o.First_Name, o.Last_Name

我相信這就是你要找的東西。 EXISTS子句將結果限制為單個訂單項> 100的訂單。GROUPBY通過包含Order_ID列來考慮同一天下的多個訂單。

SELECT
  o.First_Name
 ,o.Last_Name
 ,o.Order_Date
 ,SUM(od.OD_Amount) AS Total_Amount
FROM Orders o
  INNER JOIN Order_Details od ON od.Order_ID = o.Order_ID
WHERE EXISTS(SELECT *
             FROM Order_Details od2
             WHERE od2.OD_Amount > 100
               AND od2.Order_ID = o.Order_ID)
GROUP BY
  o.Order_ID
 ,o.First_Name
 ,o.Last_Name
 ,o.Order_Date

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM