如何按月和年获得唯一ID?

时间:2015-01-20 19:44:45

标签: sql

我有一个计算总user_id的查询 但我希望它能得到每个月/每年的计数 使用列start_date。

start_date是agentdispodetail和datetype中的一个列。

start_date通常是这样的: 2014-11-21 14:47:15.680

select distinct user_id, count(*) as total_id
  from agentdispodetail
  group by  user_id

我使用的是sql 2012。

2 个答案:

答案 0 :(得分:1)

select user_id, year(start_date), month(start_date), count(*) as total_id
from agentdispodetail
group by user_id, year(start_date), month(start_date)
order by user_id, year(start_date), month(start_date)

答案 1 :(得分:0)

你说的是

select year  = datepart(  year  ,start_date  ) ,
       month = datepart( month , start_date ) ,
       N     = count( distinct user_id )
from ...
where ...
group by datepart( year  , start_date ) ,
         datepart( month , start_date )
order by 1,2

另一种技术使用了一点日期算法:

select start_date = dateadd(day ,
                      1-datepart(day,start_date) ,
                      convert(date,start_date)
                      ) ,
       N          = count( distinct user_id )
from ...
where ...
group by dateadd(day, 1-datepart(day,start_date) , convert(date,start_date) )
order by 1

如果表架构将列user_id作为唯一列 - 它是表的主键或具有唯一索引 - 您可以省略distinct关键字。