我有一张表格,我想检查特定用户的计数,查看01/04/2016 - 17/05/2016
我添加了如下的查询
select count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
and NStatus_Flag = 1
and CUser_Id = 1260
现在如何添加date
部分并检查??
我正在使用SQL server 2005
答案 0 :(得分:2)
只需将日期列添加到条件列表中:
select count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
and NStatus_Flag = 1
and CUser_Id = 1260
and U_datetime >= '2016-04-01'
and U_datetime <= '2016-05-17'
注意我使用了不同的字符串格式来表示您在问题中使用的日期。
原因是yyyy-MM-dd
是ISO标准,因此sql server总是将它视为相同,而格式dd/mm/yyyy
是不明确的:
01/04/2016
代表2016年4月1日或1月4日?
另一件事:我总是更喜欢使用>=
和<=
代替between...and
- 因为between...and
包含第一个值但排除了最后一个,那就是一个小小的有点混乱。使用<=
,>=
它更清晰。
答案 1 :(得分:1)
使用BETWEEN
在两个日期之间进行过滤:
select count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
and NStatus_Flag = 1
and CUser_Id = 1260
and YourDateCol between '01/04/2016' and '17/05/2016'
编辑:如果我理解你,你需要一个group by子句:
select CUser_Id,count(CUser_Id) from inward_doc_tracking_trl
where CSTATUS_flag = 4
and NStatus_Flag = 1
and YourDateCol between '01/04/2016' and '17/05/2016'
GROUP BY CUser_Id
答案 2 :(得分:0)
在条件列表中添加表的日期列。
SELECT
COUNT(CUser_Id)
FROM
inward_doc_tracking_trl
WHERE
CSTATUS_flag = 4
AND NStatus_Flag = 1
AND CUser_Id = 1260
AND YourDateColumn BETWEEN '2016-04-01 00:00:00.000' AND '2016-05-17 23:59:59.999'