私は今、少し時間のための解決策を探していましたが、これに関するいくつかの他のテーマを見ましたが、私は問題を解決できませんでした。アクセスクエリ - 日付範囲を個々の日付に変換する
私が持っているテーブル、特定の日付範囲の値が含まれている「データ」:私は私の個々の日付でカレンダーを作成している
| CalendarDate | Volume
| 01/01/2017 | 2
| 02/01/2017 | 2
| 03/01/2017 | 2
| 04/01/2017 | 0
:私は以下の結果を得たい
|Arrival Date | Departure Date | Volume
| 01/01/2017 | 04/01/2017 | 6
これは私の質問で使用しています。 、それを今
SELECT
Dates.CalendarDate,
Sum([Volume]/DateDiff("d",[Arr Date],[Dep Date])) AS Vol,
Data.[Arr Date],
Data.[Dep Date]
FROM Dates
LEFT JOIN Data
ON (Dates.CalendarDate = Data.[Arr Date])
AND (Dates.CalendarDate = Data.[Dep Date])
GROUP BY
Dates.CalendarDate,
Data.[Arr Date],
Data.[Dep Date]
HAVING
(((Dates.CalendarDate)>=[Data].[Arr Date]
And (Dates.CalendarDate)<[Data].[Dep Date]));
私は以下のSQLで直接変更した場合:私は、私は、ウェブ上で見つけたものを使用しようとすると、以下のクエリを行っているが、このクエリの結果は常に空です動作します。私の唯一の問題は、デザインモードに戻ろうとすると、このコードをデザインモードに代わって接続を解除できないということです。しかし、SQLについて何も知らなくても、一部のユーザーがクエリを修正できるようにするために、これをデザインモードで実行する必要があります。
SELECT
Dates.CalendarDate,
Sum([Volume]/DateDiff("d",[Arr Date],[Dep Date])) AS SommeDeNuitées,
Data.[Arr Date],
Data.[Dep Date]
FROM Dates
LEFT JOIN Data
ON (Dates.CalendarDate < Data.[Dep Date])
AND (Dates.CalendarDate >= Data.[Arr Date])
GROUP BY
Dates.CalendarDate,
Data.[Arr Date],
Data.[Dep Date];
ありがとうございます!
左はサインインし、「等しい」以外の何かに参加しますか?以前はそれを見たことがありませんでした...私はあなたがこれを実際のフィールドに引っ張り出して引っ張りたいと思うと思います。今のところ、すべての数式を取り出して、彼らは画像を混乱させる。最初に正しいデータを返すようにクエリを取得し、次にそれを使って何を行うのか心配してください。また、私はあなたがどのようにデータを外挿するのか不明です。 2014年1月1日に2のボリュームがあることをどのように知っていますか? –
あなたのクエリとGustavの回答のいずれも、各カレンダーの日付ごとに1つのレコードを作成しません。たとえば、到着と出発の日付が重複していない2つの 'Data'レコードがある場合、それらのレコードを集計するのではなく、2つのレコードごとに別々のカレンダー日付レコードが作成されます。これがあなたが望むものだと確信していますか? – SunKnight0
@JohnnyBones - 私は特定の日付が2のボリュームを持っているかどうかはわかりませんが、私の目的のために、このデータをすべての日付に均等に広げるのに十分です。左への参加に関して、私はカレンダーからすべてのレコードを確実に取得したかっただけです。ある夜に音量がなくても、私はそれを持っている必要があります。 – PHil