审核日期 采购订单号 物料代码 采购单价
2012-10-16 POORD000426 08.03.EM3003-0001 17.094
2014-1-27 POORD023742 08.03.EM3003-0001 16.666667
2014-4-7 POORD026614 08.03.EM3003-0001 16.239316
2014-4-11 POORD026916 08.03.EM3003-0001 16.666667
2014-5-6 POORD028210 08.03.EM3003-0001 16.666667
2014-5-6 POORD028210 08.03.EM3003-0001 16.666667
2014-6-12 POORD029631 08.03.EM3003-0001 17.094017
2014-6-18 POORD030413 08.03.EM3003-0001 16.666667
需要查询的结果为:
审核日期大于上一次审核日期且采购单价比上一次增长的部分进行显示
即
审核日期 采购订单号 物料代码 采购单价
2014-5-6 POORD028210 08.03.EM3003-0001 16.666667
2014-6-12 POORD029631 08.03.EM3003-0001 17.094017
2014-6-18 POORD030413 08.03.EM3003-0001 16.666667 (这一条比上一条单价低,则不显示在查询结果中)
给个思路,或者涉及到哪些方面的函数 烦请指点一下!
------解决思路----------------------
with t as(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY 物料代码 ORDER BY 审核日期) rn
FROM ##TWW_CGJG)
SELECT t2.审核日期,t2.采购订单号,t2.物料代码,t2.采购单价,t2.物料名称,t2.规格型号
FROM t t1
JOIN t t2
AND t2.物料代码 = t1.物料代码 -- 漏了这个条件了,你例子中只有一个物料代码,所以没测试出错误来。
ON t2.rn = t1.rn + 1
WHERE t2.审核日期 <> t1.审核日期
AND t2.采购单价 > t1.采购单价