2017-09-09 12 views
0

私は、ユーザーがロゴをスキャンして「ポイント」を獲得できるアプリを持っています。彼らは1日に1回以上スキャンすることができます。今週の各日の合計ポイントを返すクエリを作成しようとしています。これまでのところ、毎週のすべてのレコードを返すことができます。課題は、毎日の合計ポイントを合計する方法です。ここで私はこれまで持っているものである:2つのスキャン月曜日の価値が2と5ポイントがある場合は今週の各日のSQLクエリSUM(*)

SET DATEFIRST 1 -- Beginning of week is Monday 
SELECT ScanID, UserID, DateTime, BeerID, BrewerID, Points 
FROM SmartTappScanLog 
WHERE DateTime >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) 
    AND DateTime < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 
    AND UserID = '1' AND BeerID = '3' 
    ORDER BY DateTime ASC 

だから、私は月曜日のための7を返したいです。おかげさまで

答えて

4

集計が必要です。このような何かがデータで一日ごとに1行を取得します:あなたは出力の曜日をしたい場合は、それを得るためにdatepart()またはdatename()を使用

SELECT CAST(Datetime as date) as date, UserID, BeerID, SUM(Points) as points 
FROM SmartTappScanLog 
WHERE DateTime >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) AND 
     DateTime < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) AND 
     UserID = 1 AND BeerID = 3 
GROUP BY CAST(Datetime as date), UserID, BeerID 
ORDER BY MIN(DateTime) ASC; 

+0

これは優れています!私がしなければならなかった唯一のことは、AS DateとAS Pointsを追加してこれらの列名を追加することでした。どうもありがとうございます!! 6分間あなたの答えを受け入れることができません。 –