使用Oracle,PSQL,我试图找出每个供应商的最早发票日期。这很简单,但我也试图找出最早发票上的最大分配线,这样我就可以确定发票属于哪个业务部门。细分由以下示例中的SEGMENT_NUMBER确定。我知道这里需要一个子查询或多个子查询,但是我不知道。下面的语法甚至不是很接近,但我想提供一些反馈意见。
SELECT
SUPPLIER_ID,
INVOICE_NUMBER,
SEGMENT_NUMBER,
MIN(INVOICE_DATE) as EARLIEST_INV_DATE,
MAX(DISTRIBUTION_AMOUNT) as MAX_DIST_LINE
FROM INVOICE_DIST
答案 0 :(得分:1)
使用像RANK()
这样的分析功能。
SELECT SUPPLIER_ID,
INVOICE_NUMBER,
SEGMENT_NUMBER,
INVOICE_DATE,DISTRIBUTION_AMOUNT
(SELECT SUPPLIER_ID,
INVOICE_NUMBER,
SEGMENT_NUMBER,
INVOICE_DATE,DISTRIBUTION_AMOUNT,
RANK() OVER(PARTITION BY SUPPLIER_ID ORDER BY INVOICE_DATE,DISTRIBUTION_AMOUNT DESC) POSITION FROM INVOICE_DIST) TBL WHERE POSITION=1;