Sql 如何计算工作日数?

Sql 如何计算工作日数?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我在SQL Server 2008中有一个表,其中包含以下数据: user ,number of request, date number of request user1, ID1139151, 2017-03-15 13:10:01.000 user1, ID1139152, 2017-03-13 14:31:05.000 user2, ID1139153, 2017-03-16 10:38:08.000 user2, ID1139154, 2017-03-16 09:26:04.0

我在SQL Server 2008中有一个表,其中包含以下数据:

user ,number of request, date number of request

user1, ID1139151, 2017-03-15 13:10:01.000

user1, ID1139152, 2017-03-13 14:31:05.000

user2, ID1139153, 2017-03-16 10:38:08.000

user2, ID1139154, 2017-03-16 09:26:04.000

user2, ID1139155, 2017-03-17 18:09:15.000

user2, ID1139156, 2017-03-17 20:14:29.000

user2, ID1139157, 2017-03-28 11:18:18.000
借助SQL查询,帮助我查找每个用户的天数总和

Result:

user, date number of request

user1, 2

user2, 3
创建数据的脚本:

CREATE TABLE Mytable (

   [user] varchar(50) NOT NULL,

   [number of request] varchar(15) NOT NULL,

   [date_number_of_request] datetime NOT NULL,     )


INSERT INTO Mytable  

VALUES 

('user1','ID1139151','2017-03-15 13:10:01.000'),

('user1','ID1139152','2017-03-13 14:31:05.000'),

('user2','ID1139153','2017-03-16 10:38:08.000'),

('user2','ID1139154','2017-03-16 09:26:04.000'),

('user2','ID1139155','2017-03-17 18:09:15.000'),

('user2','ID1139156','2017-03-17 20:14:29.000'),

('user2','ID1139157','2017-03-28 11:18:18.000');
使用
count(distinct col)
并使用
dateadd(day,datediff(day,0,[date\u number\u of\u request]),0)截断datetime to date

使用
convert(日期,[date\u请求的编号])进行相同的查询。

rextester演示:

返回:

+-------+------------------+
| user  | DaysWithRequests |
+-------+------------------+
| user1 |                2 |
| user2 |                3 |
+-------+------------------+
使用
count(distinct col)
并使用
dateadd(day,datediff(day,0,[date\u number\u of\u request]),0)截断datetime to date

使用
convert(日期,[date\u请求的编号])进行相同的查询。

rextester演示:

返回:

+-------+------------------+
| user  | DaysWithRequests |
+-------+------------------+
| user1 |                2 |
| user2 |                3 |
+-------+------------------+

也许可以这样做:

 SELECT users, COUNT(DISTINCT CAST(date_number_of_request AS date))
 FROM mytable 
 GROUP BY users

也许可以这样做:

 SELECT users, COUNT(DISTINCT CAST(date_number_of_request AS date))
 FROM mytable 
 GROUP BY users

似乎您想要为每个用户在
date\u number\u of\u request
列中统计不同日期的数量

select user, count(distinct convert(date, date_number_of_request))
  from myTable
 group by user

似乎您想要为每个用户在
date\u number\u of\u request
列中统计不同日期的数量

select user, count(distinct convert(date, date_number_of_request))
  from myTable
 group by user

加上1对于示例数据,继续尝试包括您尝试过的任何尝试,还有一种方法是向数据库中添加。这可用于过滤非工作日。除非您将银行假日存储在某个位置,否则无法识别它们。加1对于示例数据,请继续尝试包括您尝试过的任何尝试,还有一种方法是向数据库中添加。这可用于过滤非工作日。除非您将银行假日存储在某个地方,否则无法识别它们。