2011-08-23 57 views
4

这应该很简单,但有些事情让我感到很开心。按日期列排列的一列组合

我只有只有两列,就像一个表:

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 

等。

我要计算的总字数为每一天 - 由字计数的dateadded并选择和我将它们分组,并最终得到了语法错误(单词计数必须在group by子句),但现在我得到空对于当天的计数

这是我的查询:

select SUM(WordCount) as 'words per day' from @WordsCount group by DateAdded, WordCount 

这是只选择空。我怎么知道什么是错的?

谢谢。

回答

7

如果你使用什么:

select SUM(WordCount) as 'words per day' 
from @WordsCount 
group by DateAdded 

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

此外,由于DateAdded可能是DATETIME列包括一时间部分,你可能会只是日期要组:

select SUM(WordCount) as 'words per day' 
from @WordsCount 
group by CAST(DateAdded AS DATE) 

更新:如果我尝试这一点,查询工作就好了....

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) 

,并产生输出:

2008-11-07 128 
2008-11-23 25 
2008-12-03 62 
+0

TSQL的抱怨SELECT子句不能有'WordCount'',因为它不包含在分组012条款中,因此它不包含在条款中 – LocustHorde

+0

哦,我刚刚意识到我只是选择''WordsCnt''而不是'SUM(wordscnt)''..添加总和,它的工作!谢谢! – LocustHorde

+0

想知道为什么它没有包含'sum''时会报错?首先,我试图选择所有行,然后添加总和,所以当我尝试没有总和它给了错误,所以我不得不将它添加到group by子句.. – LocustHorde

5

我想这应该给你每天字数

select  SUM(WordCount) as 'words per day' , cast(DateAdded as date) dateAdded 
from  WordsCount 
group by cast(DateAdded as date) 
+0

谢谢,我意识到错误是我已经在group by子句中包括了字数! – LocustHorde