[英]Get the least closest value
我有以下数据
Docnum ItemCode opnum startdate result
73305 Wc-Trim 100 2017-08-18 2017-08-18
73305 WC-Asse 200 2017-11-29 2017-08-18
73305 Wc-id 300 2017-11-30 2017-11-29
73305 wc-qa 400 2017-12-01 2017-11-30
我需要获得结果列中所示的输出。 说明:1.Opnum 100是第一个操作,因此日期与开始日期相同。 2.对于opnum 200,它必须获取opnum 100的开始日期。对于opnum 300,它必须获取opnum 200的开始日期,依此类推。
注意:opnum并不总是100的倍数。对于我的查询,我得到所有行的opnum 100的开始日期。
查询:
select t0.DocNum,t1.itemcode,t1.U_SES_OP_NUM,t1.U_SES_DATESTART
,(select top 1 a0.U_SES_DATESTART from wor1 a0 where
t1.DocEntry = a0.DocEntry and a0.ItemType = 290 and
a0.U_SES_OP_NUM < t1.U_SES_OP_NUM)
from OWOR t0inner join WOR1 t1 on t0.DocEntry = t1.DocEntry and t1.ItemType = 290
where t0.docnum = 73305
order by t1.U_SES_OP_NUM
这通常会lag
。 由于MySQL不支持它,因此可以使用相关的子查询来完成。
select t.*,
coalesce((select start_date from tbl
where docnum=t.docnum and opnum < t.opnum
order by opnum desc limit 1)
,start_date) as result
from tbl t
该解决方案假定每个opnum和docnum有一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.