我正在处理MS SQL中的查询以显示最近30天内在我们的“服务中心”中多次出现的项目。所需数据来自最近的服务订单之前的服务订单,基于序列号。因此,如果在过去30天内收到了某件商品,请检查它是否在过去30天内的前一次收到。如何在加入之前获取上一个MAX日期
ServiceOrders表:CustID
,ItemID
,DateReceived
ItemMaster表:CustID
,ItemID
,SerialNumber
我可以用
ServiceOrders.DateReceived >= DATEADD(month,-1,GETDATE())
我可以从过去的一个月中加载的服务订单到拿到DateReceived项目一个临时表,然后根据它来查询以获得先前的服务订单,但这听起来不像是最好的计划。任何有效的方式来获得以前的服务订单的想法?
实施例数据
ServiceOrders表:
CustID ItemID DateReceived
1 2 9/26/2016
1 2 9/05/2016
1 2 1/15/2015
5 6 9/20/2016
7 6 9/02/2016
ItemMaster表:
CustID ItemID SerialNumber
1 2 8675309
5 6 101
7 6 101
因此,在上述例子中,的SerialNumber 8675309和101已经接收到一次以上,在过去30天。我需要来自ServiceOrders和ItemMaster的DateReceived 9/05/2016和09/02/2016记录(30天内的第二个最近的记录)的数据。这两个表中还有其他字段,但在这里简化了。由于物品可以被转移,因此CustID不一定会始终保持不变。 SerialNumber是关键。
发布足够的样本数据来说明您的任务和期望的结果。 –
我同意PM 77-1。如果您可以发布一些示例数据以显示您真的以后是什么,这将非常有帮助。 – Connor
添加了示例数据和标签。 –