【发布时间】:2021-09-06 04:00:00
【问题描述】:
它是一个状态驱动的应用程序跟踪软件。模块中的一些基本表格是:
-
dbo.Application 包含 ApplicationID、FirstName、LastName、Email、ApplicationTimestamp、CurrentStatusID 列
-
dbo.ApplicationStatusHistory 包含 ApplicationID、StatusID、StatusName、StatusTimestamp、isCurrent (1/0) 列
我想检查处理新申请的效率,并要求提供一份报告,说明申请在进入第二个状态(可以是2020 年收到的所有申请,例如“拒绝”、“预定面试”等)。
我尝试了以下方法,但它是错误的。
SELECT
T1.Application_ID,
T1.FirstName,
T1.LastName,
T1.ApplicationTimestamp AS 'Application Received On',
T2.StatusID AS 'Current Status',
DATEDIFF(DAY, T2.StatusTimeStamp, T1.ApplicationTimestamp) AS 'Processing Time (Days)',
DATEDIFF(HOUR, T2.StatusTimeStamp, T1.ApplicationTimestamp) AS 'Processing Time (Hours)',
DATEDIFF(MINUTE, T2.StatusTimeStamp, T1.ApplicationTimestamp) AS 'Processing Time (Minutes)'
FROM
dbo.Application T1
LEFT JOIN
dbo.ApplicationStatusHistory T2
ON
T1.Application_ID = T2.Application_ID
WHERE
T1.ApplicationTimestamp BETWEEN '2020-01-01' AND '2020-12-31'
AND T1.CurrentStatusID <> T2.StatusID
【问题讨论】:
-
请分享预期的输出,以便我们了解您的问题。
-
我认为你的方法行不通。您基本上需要按 application_id 排序,然后您的任何一个时间戳都是有意义的。然后,您可能希望将给定 application_id 的每一行与前一行进行比较。
-
请提供样本数据和期望的结果。仔细检查数据库标签;
dbo通常与 SQL Server 相关联,而不是 MySQL。