问题描述
我需要使用ROW_NUMBER()函数进行查询,以便按PurchaseID和交货日期枚举所有采购订单行订单:
SELECT
PL.PURCHID,PL.LINENUMBER,ROW_NUMBER() OVER (PARTITION BY PL.PURCHID
ORDER BY PL.LineNumber,PL.DELIVERYDATE DESC) AS LineNumberOrdered
FROM AXDB13_R1.dbo.PURCHLINE PL
WHERE PL.DATAAREAID = 'pol';
非常感谢您的帮助!
解决方法
我们可以将您对ROW_NUMBER
的呼叫替换为相关计数查询,该查询会生成先前对PURCHID
的每个分区的计数:
SELECT
PL.PURCHID,PL.LINENUMBER,(SELECT COUNT(*)
FROM AXDB13_R1.dbo.PURCHLINE PL2
WHERE PL2.PURCHID = PL.PURCHID AND
(PL2.LineNumber < PL.LineNumber OR
PL2.LineNumber = PL.LineNumber AND
PL2.DELIVERYDATE >= PL.DELIVERYDATE)) AS LineNumberOrdered
FROM AXDB13_R1.dbo.PURCHLINE PL
WHERE
PL.DATAAREAID = 'pol';