在字段中最近的特定日期类型之后发生的SQL显示记录

时间:2015-01-21 10:09:44

标签: sql sql-server-2005

我有一组关于货车的记录(序列号,工号,工作类型和当前里程)。

select serial_number, call_ref, call_type_description, callm_data19
from calls
left join equipment on link_to_equipment=equipment_code
inner join lu_call_types on call_type=call_type_code
left join call_more on call_ref=callm_link_to_call
where serial_number = 'SH12ZLN'
order by call_ref desc

我希望能够显示在最近的“面包服务”记录之后发生的下一个“面包车检查”记录。

这是数据的快照

SH12ZLN 3023152 Van Inspection  83980
SH12ZLN 3019319 Van Inspection  83046
SH12ZLN 3016999 Van Servicing   NULL
SH12ZLN 3016346 Van Inspection  81818
SH12ZLN 3012977 Van Inspection  80742
SH12ZLN 3010435 Van Inspection  79909
SH12ZLN 3008528 Van Repairs NULL
SH12ZLN 3006880 Van Inspection  78577
SH12ZLN 3001942 Van Inspection  76974
SH12ZLN 2998209 Van Inspection  75976
SH12ZLN 2994475 Van Inspection  75285
SH12ZLN 2991756 Van Repairs NULL
SH12ZLN 2989642 Van Inspection  74408
SH12ZLN 2985795 Van Inspection  73642
SH12ZLN 2981952 Van Inspection  72838
SH12ZLN 2978257 Van Inspection  72011
SH12ZLN 2975667 Van Inspection  70692
SH12ZLN 2972244 Van Inspection  69732
SH12ZLN 2969157 Van Inspection  68821
SH12ZLN 2959335 Van Inspection  67891
SH12ZLN 2956295 Van Inspection  66994
SH12ZLN 2948516 Van Inspection  66481
SH12ZLN 2946213 Van Inspection  65778
SH12ZLN 2939497 Van Inspection  64408
SH12ZLN 2937538 Van Inspection  63765
SH12ZLN 2934421 Van Inspection  62937
SH12ZLN 2932707 Van Inspection  61645
SH12ZLN 2930711 Van Inspection  60713
SH12ZLN 2930023 Van Inspection  59683
SH12ZLN 2924989 Van Inspection  58372
SH12ZLN 2924830 Van Repairs NULL
SH12ZLN 2922412 Van Inspection  57474
SH12ZLN 2919005 Van Servicing   NULL
SH12ZLN 2918376 Van Repairs NULL

澄清 - 我希望它只产生以下记录

SH12ZLN 3019319 Van Inspection  83046

1 个答案:

答案 0 :(得分:0)

问题澄清后我编辑了我的答案。 要解决这个问题,你应该找到最高的'Van Servicing'类型的job_number,这意味着最近的一个。你可以使用子查询:

SELECT MAX(job_number) FROM tbl WHERE id = 'SH12ZLN' AND type = 'Van Servicing'

在您拥有最近的服务job_number之后,只过滤job_number高于最近找到的行并选择具有最低job_number的行。

最终查询可能如下所示:

SELECT TOP 1 * FROM tbl WHERE 
job_number > (SELECT MAX(job_number) FROM tbl WHERE id = 'SH12ZLN' 
    AND type = 'Van Servicing')
AND type = 'Van Inspection'
ORDER BY job_number ASC

查看sqlfiddle以试用它:http://sqlfiddle.com/#!3/64dfc/2

P.S。正如我可以从最初的问题中获得的,您的样本数据是从查询本身接收的。您的查询可以增强以返回所需的内容,但我需要所有表的架构。