2016-09-30 5 views
1

私は、指定した時間枠内でコンバートする必要のある大きなデータセットを扱います。例えば
、データセットの一部の行:時間を秒単位でグループ化する方法(MS Access) - Conflation

symbol LAST_TRADE_TIME  CUR BID  OFFER VOLUME 
DBK  2010-12-05 11:34:57 38 37.99 38  0 
DBK  2010-12-05 11:34:57 38 37.99 38  0 
DBK  2010-12-05 11:34:57 38 37.99 38  100 
DBK  2010-12-05 11:34:58 38 37.99 38.005 0 

私は行(タイムスライス)の小さな番号を取得するつもりは何。それらのそれぞれ300秒の期間を表す:datadiffの使用は、MS Accessで、SQL Serverで仕事をしていません場合は

SELECT Min(LAST_TRADE_TIME) AS ConflatedDate, Min(CUR) 
FROM MYTABLE 
GROUP BY DateDiff("s",@StartDate,LAST_TRADE_TIME)/300; 

私は300秒ごとに

を日付とCURを取得する必要があり、それは、合計を返します私には意味がありません。あなたが上見ることができるように

ConflatedDate Expr1001 12/5/2010 9:34:56 AM 38.2 12/5/2010 9:34:57 AM 38.2 12/5/2010 9:34:58 AM 38.2 12/5/2010 9:35:08 AM 38.2 12/5/2010 9:35:13 AM 38.19 12/5/2010 9:35:14 AM 38.19 12/5/2010 9:35:16 AM 38.19 12/5/2010 9:35:18 AM 38.2

、いいえグループが時間通りに行われません。
誰かがここで私を助け、MS ACCESSのこのクエリで何が間違っているのかを教えてもらえますか?期間別にグループ化するにはどうしたらいいですか?

あなたは、いくつかの一定間隔のためにこれを行うことが多く、多くのTHX
ジェローム

+0

@StartDate「変数」はMS-Accessで有効ではありません。 –

+0

が合意しました。 @StartDateは、値が手動で渡される変数です。それは、私が集約を開始したい場所からのデータサブセットの最初の日時を表します。私は – Jerome

+0

あなたは "毎分300"分をグループ分けしたいと思っていますが、分裂はすべての種類の異なる結果を返します。分裂の代わりにmodを使用する必要があります。\ 300 –

答えて

0

:そのすでにselect文上記のパラメータとして定義されていない限り

SELECT 
    CDate(Int(LAST_TRADE_TIME * 86400/300)/86400 * 300)) AS ConflatedDate, 
    Min(CUR) As MinCur 
FROM 
    MYTABLE 
GROUP BY 
    CDate(Int(LAST_TRADE_TIME * 86400/300)/86400 * 300)) 
+0

はい@Gustav、それはあまりにも(キリストKMの提案として)うまく動作します。私は実際にグループがどのように動作するのか本当に理解していない... Thxたくさん。 – Jerome

+0

'Group By'には、集計されていない_first_ field/coloumnの式が含まれているため、グループ化する必要があります。 _second_は 'Min'によって集計されます。 – Gustav

関連する問題