2013-01-11 84 views
1

我有兩個表,我需要創建一個查詢。我相信我也需要加入他們。每個客戶ID的總美元金額的SQL Server查詢

我需要客戶的CustomerNameAddress從我Customer表,但我還需要查詢,以顯示所有下訂單的客戶的總金額。因此,如果客戶今年總共花費了300美元,那300美元就是我試圖達到的產出。

我有一個叫Order Details表使用的OrderID綁定在一個CustomerID並有在Order Detailsunitpricequantity列。我試圖找出如何多重這些,但我瘋了。

我曾經嘗試這樣做至少拿到了從接單總,但我可以肯定的語法錯誤:

SELECT unitprice, 
     quantity 
FROM [Order details] (unitprice * quantity) AS Totalorders, 
     from [Order Details] 
WHERE orderid > 0 

也是這個沒有任何的運氣:

SELECT customers.companyname        AS 'Company Name', 
     customers.address         AS 'Address', 
     [order details].unitprice * [order details].quantity AS 'Orders' 
FROM customers 
     LEFT JOIN orders 
       ON customers.customerid = orders.customerid 
ORDER BY customers.companyname, 
      customers.address, 
      orders 

感謝

+0

粘貼代碼時請謹慎行事。我爲你解決了一些語法錯誤。 – Kermit

+1

你有兩張桌子還是三張(客戶,訂單,訂單詳情)? –

+1

是的,我實際上有4張桌子。客戶,訂單細節,訂單和產品。 – user1968657

回答

0

您需要在訂單詳情加入和聚集做1組:

SELECT c.CompanyName AS "Company Name", 
     c.Address AS "Address", 
     sum(od.Unitprice * od.quantity) as "Orders" 
FROM Customers c LEFT JOIN 
    Orders o 
    ON c.CustomerID = o.CustomerID left join 
    [Order Details] od 
    on od.orderid = o.orderid 
GROUP BY c.CompanyName, c.Address 
ORDER BY c.CompanyName, c.Address 

另外,我做了一些文體上的修改。我向表名添加了別名。我發現讀c.CompanyName而不是Customers.CompanyName要容易得多。我將列別名上的分隔符更改爲使用雙引號而不是單引號。我在語句中將單引號與字符串常量關聯起來。

+0

其實我必須更改數據類型,因爲它給了我一個多重的錯誤,但是這個工作起來了!太感謝了!!!! – user1968657

0

如果它是一對多關係,則您的查詢將如下所示:

SELECT 
Customers.CompanyName AS 'Company Name', 
Customers.Address AS 'Address', 
SUM(O.Unitprice * O.quantity) as 'Orders' 
FROM Customers 
LEFT JOIN [Order Details] O 
ON Customers.CustomerID = O.CustomerID 
GROUP BY Customers.CompanyName, Customers.Address 
ORDER BY Customers.CompanyName, Customers.Address 
+0

這與我所需要的非常接近,但Order Details表中沒有CustomerID。我的訂單表中有一個客戶ID。我的訂單表和訂單明細表中都有訂單ID。 – user1968657

+0

感謝澄清。如果你已經在你的問題中明確指出了這一點,這將有所幫助 – cha