sql - SQL - 在两个带有连接的表之间使用 datediff
问题描述
我有一个场景,我需要生成一个满足以下要求的报告:
Display status of each support ticket. For each ticket include number of updates, the problem, status, time elapsed between ticket being logged and first update, and the time between ticket being logged and final update.
相关表的数据库架构是:
Ticket (TicketID, Problem, Status, Priority, LoggedTime, CustomerID, ProductID)
TicketUpdate (TicketUpdateID, Message, UpdateTime, TicketID)
到目前为止,我有以下内容:
SELECT t.TicketID,
COUNT(tu.TicketID) AS 'Number of Updates',
t.Problem,
t.Status,
(
SELECT DATEDIFF(HOUR, MIN(UpdateTime), MAX(UpdateTime))
FROM TicketUpdate
WHERE TicketID = t.TicketID
) AS 'Hours bw Q and Last response'
FROM Ticket t
LEFT JOIN TicketUpdate tu
ON t.TicketID = tu.TicketID
GROUP BY t.TicketID,
t.Problem,
t.Status;
这不能满足要求,但我正在尝试该功能。我期待我能够在 datediff 函数中使用别名,但显然我不能(如果我错了,请纠正我)。
对此问题的任何帮助将不胜感激。谢谢!
解决方案
先聚合更新;
SELECT t.*, tu.NumUpdates,
DATEDIFF(HOUR, t.LoggedTime, tu.FirstUpdateTime),
DATEDIFF(HOUR, t.LoggedTime, tu.LastUpdateTime)
FROM Ticket t LEFT JOIN
(SELECT tu.TicketID, COUNT(*) as NumUpdates,
MIN(tu.UpdateTime) as firstUpdateTime,
MAX(tu.UpdateTime) as lastUpdateTime
FROM TicketUpdate tu
GROUP BY tu.TicketID
) tu
ON t.TicketID = tu.TicketID
推荐阅读
- android - 如何在viewpager中保存片段实例?
- r - R:在使用 dplyr sparklyr / 使用 sparklyr 连接中的管道处理数据时,在 as.numeric() 之后出现 NaN
- r - GTrends 位置不匹配与美国人口普查 Shapefile
- ios - 正在工作的应用程序购买应用程序突然停止工作。应用程序购买弹出窗口没有出现
- python - Pandas 的 [df.groupby(...)['col_name'].shift(1)] 的 SQL 等效项
- c# - 如何使用 c# 从 modbus RTU rs323 读取浮点数据
- javascript - 为什么当我单击同一页面中的一个下拉列表时页面中的其他下拉列表会更新
- android - 在 Android 8 Oreo 的 WifiManager 的 startscan 方法中没有收到响应
- android - 使用 kSOAP2 传递字符串数组
- iis - 在同一应用程序池中的 64 位应用程序中使用 32 位 dll