2016-09-18 14 views
1

私は2つのテーブルがある - 販売(ID、Staff_Name、SALE_DATE、金額)、費用(ID、Expense_Name、Expense_Date、金額を)個別集計関数

問題は販売のための金額の合計を表示することです特定の日付の2つの列に費用が含まれています。

次のコードは、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

現在のクエリにjoin-conditionはありません。そのため、 '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; 

注:MS Accessのは、そこに何かを必要とし、dualようなものをサポートしていないため

  • from句のみです。
  • 日付の形式を調整する必要がある場合があります。
  • このバージョンはあなたのバージョンよりも優れています。 2つの行に同じsales.amountの値がある場合、または同じ値のexpense.amountの値が同じ場合はどうなりますか?あなたの合計は正しくありません。
  • FROM句にカンマを使用しないでください。 常に明示的なJOIN構文を使用してください。
+0

ありがとうございました..私はSQLに特に慣れていない、特にAccessの.. – user55844