SQL查询到本周的每一天的SUM(*)

时间:2017-09-09 12:11:50

标签: sql sql-server

我有一个应用程序,使用户可以扫描徽标并赢得"积分"。他们每天可以扫描一次以上。我试图写一个查询,返回本周每一天的总积分。到目前为止,我能够返回一周中每一天的所有记录。挑战在于如何总计每天的总积分。以下是我到目前为止的情况:

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

所以,如果周一有两次扫描,分别为2点和5点,我想在周一返回7。 感谢。

1 个答案:

答案 0 :(得分:4)

您需要汇总。像这样的东西每天会在数据中获得一行:

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;

如果您想要输出中的星期几,请使用datepart()datename()来获取它。