2016-09-18 81 views
1

我有兩個表 - 銷售(ID,Staff_Name,SALE_DATE,量),費用(ID,Expense_Name,EXPENSE_DATE,量)不同的集合函數

的問題是,顯示金額的銷售總和以及給定日期的兩列費用。

下面的代碼工作中的Oracle SQL:

select sum(distinct sales.amount),sum(distinct expense.amount) from sales,expense where sales.sale_date='06-dec-1996' and expense.expense_date='06-dec-1996'; 

但由於MS Access不支持聚合函數裏面不同,我想這(工作):

SELECT Sum(Sales.amount) FROM (SELECT DISTINCT Sales.amount FROM Sales); 

,但我可以不去工作,我真的需要。我如何在MS Access中執行此操作?

+0

在您當前的查詢中沒有連接條件,因此您將該行的所有行從'Sales'交叉連接到該日期的'Expense'中的所有行。這就是爲什麼你嘗試添加'DISTINCT'的原因,但這隻會隱藏一個非常糟糕的查詢。戈登的方法好得多。 – dnoeth

回答

1

使用子查詢:

select (select sum(sales.amount) 
     from sales 
     where sales.sale_date = '06-dec-1996' 
     ), 
     (select sum(expense.amount) 
     from expense 
     where expense.expense_date = '06-dec-1996' 
     ) 
from (select count(*) from sales) as s; 

注:

  • from條款僅僅是因爲MS Access需要的東西有,不支持像dual東西。
  • 日期格式可能需要調整。
  • 此版本比您的版本更好。如果兩行具有相同的sales.amount值或相同的expense.amount值會怎麼樣?你的總數是不正確的。
  • 從不在FROM子句中使用逗號; 始終使用使用明確的JOIN語法。
+0

非常感謝..我對SQL不熟悉,特別是Access的.. – user55844