Sql server 2012 SQL按日期分组行并显示每个日期的计数

Sql server 2012 SQL按日期分组行并显示每个日期的计数,sql-server-2012,Sql Server 2012,使用SQL Server 2012,我有一个事务列表,每个事务都有事务发生时间的时间戳。我想显示一列交易发生的日期,第二列显示每个日期发生的交易数量 我已经设法显示了交易发生的日期列,但是第二部分有问题。我的第一个代码是: select distinct convert(varchar(10), Timestamp, 111) as 'TransactionDates' from Transactions 返回交易发生的日期 我假设在select语句的第二部分中,我找到了每天的事务数,我使用

使用SQL Server 2012,我有一个事务列表,每个事务都有事务发生时间的时间戳。我想显示一列交易发生的日期,第二列显示每个日期发生的交易数量

我已经设法显示了交易发生的日期列,但是第二部分有问题。我的第一个代码是:

select distinct convert(varchar(10), Timestamp, 111) as 'TransactionDates'
from Transactions 
返回交易发生的日期

我假设在select语句的第二部分中,我找到了每天的事务数,我使用了完全相同的语句计数,如下所示:

select distinct convert( varchar(10), Timestamp, 111) as 'TransactionDates',
count(distinct convert( varchar(10), Timestamp, 111)) as 'NumTransactions'
from Transactions

这将导致第二列名为
NumTransactions
,其中包含一行记录每个日期的次数。我可能误解了计数函数的正确使用,或者可能有一种更简单的方法来实现这一点。

我认为您需要的是:

SELECT d = CONVERT(DATE, [Timestamp]), c = COUNT(*)
FROM dbo.Transactions
GROUP BY CONVERT(DATE, [Timestamp])
ORDER BY d;
请不要做这种可怕的转换字符串技巧,以消除时间。为什么?


还应尽量避免使用保留字,如
timestamp
作为列名<代码>时间戳对于初学者来说是什么?

谢谢这非常有效。这是我第一次使用convert函数,我甚至没有想过只使用Date。这是一个面对面的时刻。我有一个数据库,可以处理各种事情,但不允许更改数据库本身。我的命名约定将更具描述性。