要取出那price 的生成日期,而只有這個price和上個 pricelist version的 price相差多於0.01 元才取出來。
首先假設一個產品有4個價格版本
select pp.pricestd from m_product p
inner join m_productprice pp on(pp.m_product_id=p.m_product_id)
inner join m_pricelist pl on(pl.m_pricelist_id=pp.m_pricelist_id)
where pl.name='Purchase' and p.m_product_id=1027371
order by pp.created
假設結果有5行
0.5
0.49
0.51
0.75
0.88
但是,不需要返回5行,需要返回0.75和0.88,因爲他們滿足與第一個結果相減大于0.01:abs(0.75-0.5)>0.01,(0.88-0.5)>0.01
而0.49无须返回,abs(0.49-0.5)=0.01
谁能帮我完成這句sql,使它能做到第一個結果與後面的結果作比較,並只返回滿足條件的sql.
非常感謝!
首先假設一個產品有4個價格版本
select pp.pricestd from m_product p
inner join m_productprice pp on(pp.m_product_id=p.m_product_id)
inner join m_pricelist pl on(pl.m_pricelist_id=pp.m_pricelist_id)
where pl.name='Purchase' and p.m_product_id=1027371
order by pp.created
假設結果有5行
0.5
0.49
0.51
0.75
0.88
但是,不需要返回5行,需要返回0.75和0.88,因爲他們滿足與第一個結果相減大于0.01:abs(0.75-0.5)>0.01,(0.88-0.5)>0.01
而0.49无须返回,abs(0.49-0.5)=0.01
谁能帮我完成這句sql,使它能做到第一個結果與後面的結果作比較,並只返回滿足條件的sql.
非常感謝!
SELECT pricestd,
(SELECT pricestd
FROM (SELECT pp.pricestd, ROWNUM rn
FROM m_product p INNER JOIN m_productprice pp
ON (pp.m_product_id = p.m_product_id)
INNER JOIN m_pricelist pl
ON (pl.m_pricelist_id = pp.m_pricelist_id)
WHERE pl.NAME = 'Purchase ' AND p.m_product_id = 1027371
ORDER BY pp.created) tb_1
WHERE rn = 1) firstprice
FROM (SELECT pp.pricestd
FROM m_product p INNER JOIN m_productprice pp
ON (pp.m_product_id = p.m_product_id)
INNER JOIN m_pricelist pl
ON (pl.m_pricelist_id = pp.m_pricelist_id)
WHERE pl.NAME = 'Purchase ' AND p.m_product_id = 1027371
ORDER BY pp.created) tb_2
where abs(pricestd -firstprice) >0.01
非常感謝你在短短時間幫我想出答案。