【问题标题】:SQL - using datediff between two tables with joinSQL - 在两个带有连接的表之间使用 datediff
【发布时间】:2021-07-31 07:51:50
【问题描述】:

我有一个场景需要生成满足以下要求的报告:

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 函数中使用别名,但显然我不能(如果我错了,请纠正我)。

对于此问题的任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: sql join datediff


    【解决方案1】:

    先聚合更新;

    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
    

    【讨论】:

    • 如果我再为一个问题打扰您,对不起。我似乎在运行此查询时遇到问题: SELECT t.Priority, Count(t.TicketID), tu.MinUpdateTime, tu.MaxUpdateTime FROM coursework.Ticket t LEFT JOIN (SELECT tu.TicketID, MIN(tu.UpdateTime) as MinUpdateTime, MAX(tu.UpdateTime) as MaxUpdateTime FROM coursework.TicketUpdate tu) tu ON t.TicketID = tu.TicketID WHERE tu.TicketID IN (t.TicketID) GROUP BY t.Priority;我试图做到这一点:对于每个优先级,列出已处理的票证数量,以及记录票证和上次更新票证之间经过的最短时间。
    • 我非常感谢@Gordon Linoff 的任何帮助!
    • @MAK7 。 . .也许您应该用样本数据和期望的结果提出一个新问题。
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多