【问题标题】:SQL: count entries that are close to each others timeSQL:计算彼此接近的条目时间
【发布时间】:2017-09-27 03:46:20
【问题描述】:

我正在尝试创建一个查询,该查询在上次为同一设备创建任务的 7 天内添加任务时计数。

我们的服务请求可以包含多个服务任务。每个任务都可以关联一个服务设备。

这是我目前拥有的代码。我的结果最终将所有服务任务都减去了一个,而不仅仅是前一个任务 7 天内的那些,我不知道为什么。关于我做错了什么有什么想法吗?

SELECT c.CustomerID, 
e.strSerialNumber, 
COUNT(r2.dtmServiceRequestStartDate) 
as 'Call-Backs'

FROM tblServiceRequest r2
LEFT OUTER JOIN tblServiceTask t2
ON r2.lngServiceRequestID = t2.lngServiceRequestID
LEFT OUTER JOIN tblServiceEquipment e
ON e.lngSEID = t2.lngSEID
INNER JOIN tblCustomers c
ON r2.strShipTo = c.CustomerID

WHERE r2.dtmServiceRequestStartDate < (
 SELECT MAX(r.dtmServiceRequestStartDate)
 FROM tblServiceRequest r
 LEFT OUTER JOIN tblServiceTask t
 ON r.lngServiceRequestID = t.lngServiceRequestID
 WHERE r.dtmServiceRequestStartDate < (
  SELECT MAX(dtmServiceRequestStartDate) 
  FROM tblServiceRequest r1 
  LEFT OUTER JOIN tblservicetask t1 
  ON r1.lngServiceRequestID = t1.lngServiceRequestID 
  WHERE t.lngSEID = t1.lngSEID)
) + 7
AND t2.lngSEID IS NOT NULL
AND c.Active = 1
GROUP BY c.CustomerID, e.strSerialNumber

【问题讨论】:

  • 欢迎来到Stack Overflow,对于sql相关问题,请说明您正在使用的DBMS(sql server,oracle ...等)。并请提供表结构、样本数据和预期结果。

标签: sql date compare


【解决方案1】:

您正在寻找的是DATEDIFF 功能。来自 MSDN 的示例:

USE AdventureWorks; GO SELECT DATEDIFF(day, OrderDate, GETDATE()) AS NumberOfDays FROM Sales.SalesOrderHeader; GO

【讨论】:

  • 你怎么知道 OP 正在使用支持该产品特定功能的 dbms?
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
相关资源
最近更新 更多