2012-08-28 122 views
1

我有一个表(在SQL Server 2008 R2中,如果有问题)用以下行定义。 DateAdded列是数据类型SmallDateTime通过部分日期分组的T-SQL查询/计数行

ID DateAdded 
    1 2012-08-01 12:34:02 
    2 2012-08-01 12:48:25 
    3 2012-08-05 08:50:22 
    4 2012-08-05 11:32:01 
    5 2012-08-26 09:22:15 
    6 2012-08-26 13:42:02 
    7 2012-08-27 08:22:12 

我需要做的是依靠同YYYY/MM/DD值出现的行。所以我需要获得的结果看起来像这样...

DateAdded QTY 
2012-08-01 2 
2012-08-05 2 
2012-08-26 2 
2012-08-27 1 

我找不出要使其工作的语法/表达式。有人能指引我朝着正确的方向吗?谢谢!

+0

突出代码样本或表格输出时,请使用'{}'按钮。 –

+1

如果您发布代码,XML或数据样本,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(“{}”)以精确地格式化和语法突出显示它!那么你不需要任何杂乱的'
'标签! –

+0

对不起。我编辑了这篇文章,希望现在可以吗? – Skatterbrainz

回答

5
SELECT 
    DateAdded = DATEADD(DAY, DATEDIFF(DAY, 0, DateAdded), 0), 
    QTY = COUNT(*) 
FROM dbo.tablename 
GROUP BY DATEADD(DAY, DATEDIFF(DAY, 0, DateAdded), 0); 

或者像马克正确地指出了(我花更多的时间在看格式化搞砸比标签):

SELECT 
    DateAdded = CONVERT(DATE, DateAdded), 
    QTY = COUNT(*) 
FROM dbo.tablename 
GROUP BY CONVERT(DATE, DateAdded); 
+2

或者自2008年R2起'GROUP BY CAST(DateAdded AS DATE)' –