按日期列的一列组的总和

Loc*_*rde 4 sql t-sql sql-server-2008

这应该很简单,但有些东西给了我很大的时间.

我只有一个只有两列的表,如:

 WordCount          DateAdded
 `````````````````````````````
 96                 2008-11-07 09:16:31.810
 32                 2008-11-07 15:26:27.547
 25                 2008-11-23 16:05:39.640
 62                 2008-12-03 12:33:03.110
Run Code Online (Sandbox Code Playgroud)

等等.

我想计算每一天总字数 - 我按照dateadded对它们进行分组并选择WordCount的总和,最后得到语法错误(wordcount必须在group by子句中)但是现在我得到空值了一天的数量

这是我的查询:

select SUM(WordCount) as 'words per day' from @WordsCount group by DateAdded, WordCount
Run Code Online (Sandbox Code Playgroud)

这只是选择null.我怎么知道什么是错的?

谢谢.

mar*_*c_s 9

如果你使用怎么办:

select SUM(WordCount) as 'words per day' 
from @WordsCount 
group by DateAdded
Run Code Online (Sandbox Code Playgroud)

我不明白你为什么还要用字数来分组....

此外,由于DateAdded可能是DATETIME包含时间部分的列,您可能只想按日期分组:

select SUM(WordCount) as 'words per day' 
from @WordsCount 
group by CAST(DateAdded AS DATE)
Run Code Online (Sandbox Code Playgroud)

更新:如果我尝试这个,查询工作正常....

DECLARE @WordsCnt TABLE (WordCount INT, DateAdded DATETIME)

INSERT INTO @wordsCnt(WordCount, DateAdded)
VALUES(96, '2008-11-07 09:16:31.810'),
      (32, '2008-11-07 15:26:27.547'),
      (25, '2008-11-23 16:05:39.640'),
      (62, '2008-12-03 12:33:03.110')

select CAST(DateAdded AS DATE), SUM(WordCount) as 'words per day' 
from @WordsCnt
group by CAST(DateAdded AS DATE)
Run Code Online (Sandbox Code Playgroud)

并产生输出:

2008-11-07   128
2008-11-23    25
2008-12-03    62
Run Code Online (Sandbox Code Playgroud)


Dar*_*son 6

我认为这应该给你每天的字数

select      SUM(WordCount) as 'words per day' , cast(DateAdded as date) dateAdded
from        WordsCount 
group by    cast(DateAdded as date)
Run Code Online (Sandbox Code Playgroud)