我在这里找到了类似但不完全匹配的场景,并且没有任何运气让它发挥作用。如果这是一个重复的问题,请原谅我,我肯定是先搜索的!我有三张桌子。第一个,A,是帮助台票的列表。第二个,B,时间条目列表。第三个,C,关于第二个中时间条目的更多详细信息。对于 A 中的每个项目,B 中可以有多个项目,但对于 B 中的每个项目,C 中只有且恰好一个条目。
wh_task 作为 A
task_id create_time source_id
======== ============ ==========
1351000 2013-01-23 12:03:23.590 8
1351001 2013-01-23 13:03:23.590 5
1351002 2013-01-23 15:03:23.590 8
wh_time_item 为 B
task_id time_item_id created_by_user_id
======== ============ =================
1351000 2456 1234567
1351000 2457 2345786
1351000 2458 1234567
wh_time_subitem 为 C
time_item_id create_time
======== ============
2456 2013-01-23 12:43:23.590
2457 2013-01-25 13:13:23.590
2458 2013-02-12 16:03:23.590
高级目标 - 在给定的日期范围内,由工程师确定每个工单的平均 FIRST 响应时间。
具体来说 - 首先,查找 A 中在 @StartDate 和 @EndDate 之间创建的所有项目。接下来,在 A 中找到 source_id = 8 的所有项目(这些是我关心的唯一票证)。然后,我需要找到 B 中的哪个项目是“第一个”条目,即最接近 A 中项目创建的日期。虽然表 B 没有创建日期 - 那是在 C 中。一旦我确定B 中“第一个”的项目,我需要查看 created_by_user_id 是否与 @Engineer 匹配。最后,我想要所有匹配项的 a.create_time 和 c.create_time 之间的日期差异的平均值,以分钟为单位。像 AVERAGE(DATEDIFF(MI, a.create_time, c.createtime) 作为响应时间。
在过去的两天里,我经历了十几次迭代,这是我现在的错误查询。我知道这个查询,即使它可以运行,也不会给我想要的东西 - 一直在摆弄它来拉出额外的列以进行故障排除:
DECLARE @StartDate datetime
DECLARE @EndDate datetime
DECLARE @Engineer integer
SET @StartDate = '04/01/13'
SET @EndDate = '04/30/13 23:59:59'
SET @StartDate = DATEADD(S, (DateDiff(s, getdate(), getutcdate())), @StartDate)
SET @EndDate = DATEADD(S, (DateDiff(s, getdate(), getutcdate())), @EndDate)
SET @Engineer = 1234567
SELECT [task_number]
,a.[create_time]
,DateDiff(MI, a.create_time, c.create_time) as a_responsetime
,b.user_id
,c.[time_subitem_id]
,a.ticket_source_id
FROM [databasename].[dbo].[wh_task] as a
LEFT JOIN [databasename].[dbo].[wh_time_item] AS b
ON a.task_id = b.task_id
LEFT JOIN [[databasename].[dbo].[wh_time_subitem] AS c
ON b.time_item_id = (SELECT c.time_item_id from [databasename].[dbo].[wh_time_subitem] WHERE c.create_time = (SELECT MIN(c.create_time) from [databasename].[dbo].[wh_time_subitem]))
WHERE
b.user_id = @Engineer
AND a.ticket_source_id = 8
AND c.create_time between @StartDate and @EndDate
ORDER BY a.ticket_source_id
提前感谢您提供的任何帮助。我充其量只是一个 SQL 爱好者,所以不要担心伤害我的感情。:-)