3

アクセス クエリ内で日付をフィルター処理するときに、適切な数のレコードを取得するにはどうすればよいですか。

SELECT ID, REF, SalesDate, DCount("ID","tblRecords"," Ref='" & [Ref] & "' AND [SalesDate]=#" & format([SalesDate],"yyyy/mm/dd") & "#") as EXPR1 from tblCurrent 

28-04-12 のように誤解されない場合は日付を取得しますが、04-06-12 の場合は間違っていると見なして取得しません。

このクエリは、オンザフライで作成されたり、フォームなどから生成されたりしないことに注意してください...

4

1 に答える 1

6

VBA で日付に yyyy/mm/dd を使用します。

#" & Format([SalesDate],"yyyy/mm/dd") & "#"

または、クエリを作成するためのパラメーター。

追加情報を編集

SQL サーバーを使用していることがわかったので、派生テーブルを使用することをお勧めします。

SELECT dbo_Table_1.ADate, ACount FROM dbo_Table_1
LEFT JOIN (SELECT a.ADate,Count(*) As ACount 
           FROM  dbo_Table_1 As a GROUP BY a.ADate) b
ON dbo_Table_1.Adate=b.ADate

編集再議論

SELECT * FROM dbo_vwRecordsCurrent As t 
LEFT JOIN (
   SELECT a.OpptyIncentiveModifiedDate, a.DataSetID, Count(*) AS ACount 
   FROM dbo_vwRecordsHistorical AS a 
   WHERE a.OpportunityIgnored = True 
   GROUP BY a.OpptyIncentiveModifiedDate, a.DataSetID) AS h 
ON t.OpptyIncentiveModifiedDate = h.OpptyIncentiveModifiedDate 
AND t.DataSetID = h.DataSetID

名前が非常に長いため、テーブルにエイリアスを付けました。そのため、外側のSQLでエイリアスを使用する方が読みやすいです。それらは内部SQLに不可欠です。既存のテーブルの名前で派生テーブルにエイリアスを設定することはお勧めできません。

于 2012-07-23T09:42:53.403 に答える