2017-10-04 19 views
1

ユーザがロゴをスキャンするタイミングを追跡するテーブルがあります。それは、スキャンのDATETIMEとスキャンのためにユーザーに与えられたポイント(1と5の間)を追跡します。SQLでGROUP BY DATETIMEカラムを使用する方法

私はその週の1日あたりの平均ポイントを計算しようとしています。私が持っている課題は、GROUP BYを使用するときです.DATETIMEの値はグループ化できない2番目の値であるため、すべてのスキャンを戻しています。含む

SET DATEFIRST 1 -- Beginning of week is Monday 
SELECT SUM(Points) AS Points, DateTime 
FROM SmartTappScanLog 
WHERE DateTime >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) 
    AND DateTime < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 
GROUP BY DATETIME 

私が試したいくつかのこと:

GROUP BY CAST(DATETIME As DATE) 
+0

'CAST BY GROUP(DATEとしてDATETIME)'べき作品。あなたの問題は何ですか? – Squirrel

答えて

1

あなたが好き、DATEPART()を使用することができます。

SELECT SUM(Points) AS Points, MIN(DateTime) as DateTime 
FROM SmartTappScanLog 
WHERE DateTime >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) 
    AND DateTime < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 
GROUP BY DATEPART(day,DATETIME) 
+1

これは完全に機能しました。どうもありがとうございました。 10分で受け入れられるとマークします。乾杯! –

+0

@MartinMuldoon、ありがとう、私は助けてうれしい – apomene

関連する問題