部分日期分组的T-SQL查询/计数行

时间:2012-08-28 15:49:17

标签: tsql sql-server-2008-r2

我有一个表(在SQL Server 2008 R2中,如果很重要),使用以下行定义。 DateAdded列是SmallDateTime数据类型。

 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

我无法弄清楚语法/表达式以使其工作。有人能指出我正确的方向吗?谢谢!

1 个答案:

答案 0 :(得分:5)

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

或者正如Marc正确地指出的那样(我花了更多的时间来查看格式化的栓子而不是标签):

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