1

MSaccess に次のテーブルがあり、2 つの列を結合してグループ化し、特定の日付/時刻の範囲内で、可能であればタイプと市区町村で重複の数を示す必要がありますが、これは必須ではありません。

LocationX LocationY DateTimeStamp,      City      Type
100       150       08/01/2013 8:59:44  Brisbane  RadioJob
101       155       08/01/2013 9:56:01  Brisbane  RadioJob
100       150       08/01/2013 8:49:39  Brisbane  RadioJob
103       150       08/01/2013 8:55:13  Brisbane  RadioJob

列 0 と列 1 を結合してカウントを行う必要がありますが、特定の時間範囲内の場所のみを選択します。

たとえば、2013 年 8 月 1 日 8:49:00 と 2013 年 8 月 1 日 8:59:59 の間で選択した場合、次の表が表示されます。

LocationX LocationY CountOfLocation  City      Type
100       150       2                Brisbane  RadioJob
103       150       1                Brisbane  RadioJob

これを機能させるために、MSaccessでデザインビューを使用して2つのクエリを作成しましたが、1つのSQLステートメントでこれを行う方法を学びたいと思います。

前もって感謝します、

マイク

4

2 に答える 2

4
SELECT LocationX, LocationY, City, Type, COUNT(*) CountOfLocation  
FROM   tableName
WHERE  DateTimeStamp BETWEEN '2013-08-01 8:49:00' AND '2013-08-01 8:59:59'
GROUP  BY LocationX, LocationY, City, Type

アップデート

SELECT LocationX, LocationY, City, Type, COUNT(*) AS CountOfLocation  
FROM   tableName
WHERE  DateTimeStamp BETWEEN #2013-08-01 08:49:00# AND #2013-08-01 08:59:59#
GROUP  BY LocationX, LocationY, City, Type
于 2013-01-08T00:06:30.327 に答える
4
SELECT
   L.LocationX,
   L.LocationY,
   Count(*) AS CountOfLocation,
   L.City,
   L.Type
FROM
   Locations L
WHERE
   DateTimeStamp >= #08/01/2013 08:49:00#
   AND DateTimeStamp < #08/01/2013 09:00:00#
GROUP BY
   L.LocationX,
   L.LocationY,
   L.City,
   L.Type;

BETWEEN使用から不等式への変更はかなり意図的なものであったことを指摘したいと思います。その理由は、使用BETWEENには、基礎となる日付データ型が特定の解像度または粒度 (ここでは秒) を持っている必要があるためです。しかし、データベースが成長し、いつか SQL Server にアップサイズされるとしましょう。日付リテラルなどの明らかな問題に対処した後、データ型への変換で厄介な問題が潜んでいdatetimeます。突然、秒の間の値が可能になり、データが不適切に除外されます。

私の専門的なアドバイスは、すべてのデータベース クエリで、私のクエリに示されている構文を一貫して使用し始めることです。つまり、開始時刻を含め、終了時刻を除外します。ベスト プラクティスの習慣を学ぶことは、どの DBMS でも役立つと考えてください...

また、Access の日付リテラルには#ラッパーが必要であることは事実ですが、SQL Server 互換の構文をデータベース レベルで選択して、'. 構文があまり風変わりではなく、アップサイジングのシナリオでは、実行する作業がはるかに少ないため、大きな祝福になるため、実際にこの切り替えをお勧めします。ただし、今変更すると、既存のクエリはすべてすぐに修正する必要があります。

于 2013-01-08T00:06:47.770 に答える