我有一张包含服务票据调度数据的表。每个调度都有自己的ID。对于任何给定的服务票据,如果服务技术人员需要多次解决问题,他们可以拥有多个调度ID。我只关注LATEST发货ID记录的状态,对任何特定时间感兴趣。在Access中,我确实是勺子喂食,因为我所要做的就是进行一个在Service_Ticket_Id上分组的查询并带回最大的dispatch_ID。然后,我将该查询连接回原始调度表,并在dispatch_ID上使用内部联接,并仅撤回最新的调度记录。但是,我现在被迫在一个查询中执行此操作。以下显然搞砸了。我还需要将这个整体结果连接到显示技术名称等的另一个表格,尽管这不是绝对至关重要的。
SELECT
Max(dbo_SV_Service_Ticket_Dispatch.Dispatch_Id) AS MaxOfDispatch_Id,
dbo_SV_Service_Ticket_Dispatch.Service_Ticket_Id
FROM
dbo_SV_Service_Ticket_Dispatch
GROUP BY
dbo_SV_Service_Ticket_Dispatch.Service_Ticket_Id
INNER JOIN
(SELECT
dbo_SV_Ticket_Dispatch.Dispatch_Time
FROM
dbo_SV_Service_Ticket_Dispatch) ON dbo_SV_Service_Ticket_Dispatch.Dispatch_Id = MaxofDispatch_ID
答案 0 :(得分:0)
通过使用子查询或使用CTE或临时表,有很多方法可以做到这一点。为简单起见,请尝试以下方法。
SELECT Max(Dispatch_Id) AS MaxOfDispatch_Id,Service_Ticket_Id into #t
FROM dbo_SV_Service_Ticket_Dispatch
GROUP BY Service_Ticket_Id
SELECT Dispatch_Time from
dbo_SV_Service_Ticket_Dispatch where Dispatch_Id= (select MaxOfDispatch_Id from #t)
答案 1 :(得分:0)
如果您只需要基于每个service_ticket_id的max dispatch_id发送的详细信息,您可以执行以下操作:
SELECT * FROM (
SELECT MAX(dm.dispatch_Id) AS maxDispatchId, dm.Service_Ticket_Id
FROM dbo_SV_Service_Ticket_Dispatch dm
GROUP BY Service_Ticket_Id) m
INNER JOIN dbo_SV_Service_Ticket_Dispatch d ON d.dispatch_id = m.dispatch_id
<强>更新强>
要从故障单表中获取详细信息,只需将其加入故障单ID:
SELECT * FROM (
SELECT MAX(dm.dispatch_Id) AS maxDispatchId, dm.Service_Ticket_Id
FROM dbo_SV_Service_Ticket_Dispatch dm
GROUP BY Service_Ticket_Id) m
INNER JOIN dbo_SV_Service_Ticket_Dispatch d ON d.dispatch_id = m.dispatch_id
INNER JOIN dbo_SV_Service_Ticket t ON t.Service_Ticket_Id = m.Service_Ticket_Id