简体   繁体   English

根据日期列上的间隔(天)计数记录

[英]count records based on group of interval(days) on date column

count data between intervals,interval depends on how much older the record 在间隔之间对数据进行计数,间隔取决于记录的保留时间

I have a table called complaint in which I have many columns with ComplaintDate ,I want to show count of records depends on interval . 我有一个称为complaint表,其中的ComplaintDate有很多列,我想显示记录数取决于时间间隔

Following interval will be used to categorized records: 以下间隔将用于对记录进行分类:

  1. number of compalaint which is 10 days older. 投诉数量比10天大。
  2. number of compalaint which is 10-20 days older. 投诉数量比原来大10-20天。
  3. number of compalaint which is 20-30 days older. 投诉数量比20-30天大。
  4. number of compalaint which is more than 30 days older. 投诉数量超过30天。

I have tried something like this 我已经尝试过这样的事情

select SUM(CASE WHEN ComplaintDate BETWEEN DATEADD (dd,-10,getdate())AND   GETDATE()  THEN 1 ELSE 0 END) As '0-10',
       SUM(CASE WHEN ComplaintDate BETWEEN  DATEADD (dd,-20,getdate()) AND DATEADD (dd,-10,getdate()) THEN 1 ELSE 0 END) AS '10-20',
       SUM(CASE WHEN ComplaintDate BETWEEN DATEADD (dd,-30,getdate()) AND DATEADD (dd,-20,getdate()) THEN 1 ELSE 0 END) AS '20-30'       
 FROM Complaint 

also i want that day included in 0-10 days interval should not be count in 10-20 or 20-30 days interval and same should apply for other other intervals as well . 我也希望在0-10天间隔内包含的那天不应该在10-20或20-30天间隔内计算,同样的情况也应该适用于其他其他间隔。

select 
SUM(CASE WHEN ComplaintDate > DATEADD (dd,-10,getdate()) AND   ComplaintDate <= GETDATE()  THEN 1 ELSE 0 END) As '0-10',

SUM(CASE WHEN ComplaintDate > DATEADD (dd,-20,getdate()) AND ComplaintDate<=DATEADD (dd,-10,getdate()) THEN 1 ELSE 0 END) AS '10-20',

SUM(CASE WHEN ComplaintDate > DATEADD (dd,-30,getdate()) AND ComplaintDate <=DATEADD (dd,-20,getdate()) THEN 1 ELSE 0 END) AS '20-30'    

FROM Complaint 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM