2017-08-23 88 views
-1

[Order Details]和[Customers]都是無關的表格。通常情況下,我會假設我無法從兩者中繪製查詢,因爲行數可能不匹配。使用來自兩個不相關表格的數據進行算術運算

但是,在這種情況下,由於SUM(od.quantity * od.Unitprice)和COUNT(distinct c.CustomerID)都是單個整數,爲什麼我不能執行我的查詢,如下所示?

SELECT SUM(od.quantity * od.Unitprice)/COUNT(distinct c.CustomerID) 
FROM[Order Details] od, Customers c 

樣本數據:

enter image description here

注意:我使用Microsoft SQL Server

+1

添加一些示例表數據和預期的結果 - 作爲格式化文本。 – jarlh

+0

是什麼讓你覺得你不能?你有錯誤嗎? –

+0

@TabAlleman:我沒有收到錯誤,但結果是意外的 – czolbe

回答

1

羅斯文示例數據庫由於您的查詢的格式與單個FROM子句的方式和一箇舊式連接,你正在做一個CROSSJOIN,它獲得每行的笛卡爾乘積加入到兩個表中的每一行。

只得到你似乎單列在尋找,你需要使用兩個子查詢:

SELECT (SELECT SUM(od.quantity * od.Unitprice) FROM [Order Details] od)/(SELECT COUNT(distinct c.CustomerID) FROM Customers c) 
+0

它不適用於我在微軟SQL服務器管理工​​作室,是否特定於不同的平臺/數據庫? – czolbe

+1

小錯誤,我忘了你需要一個外部SELECT來使它工作。編輯後立即嘗試。 –