【发布时间】:2018-10-14 07:35:47
【问题描述】:
我在 Oracle 中创建了以下查询,以返回客户最近的付款日期和相应的付款金额。它有效,因为我没有包括金额字段。如果我这样做,它会导致每个公司出现多行。 非常感谢。
有效(但不包括最近的金额)
选择 COMPANY_NAME、TERM_CODE、
MAX(LAST_PYMT) 作为 LAST_PYMT_REC,
AR_BALANCE、MAX_CREDIT_AR、OFFSET_BALANCE 作为 CREDITBAL_W_AP_OFFSETS
从
(
选择公司名称,s2.LAST_PYMT,s2.AMOUNT,
CURRENT_BALANCE 作为 AR_BALANCE,
(CURRENT_BALANCE - AP_TOTAL) 作为 OFFSET_BALANCE,
TERM_CODES.TERM_CODE,
AP_TOTAL,
MAX_CREDIT AS MAX_CREDIT_AR
来自公司 s1
左外连接 CTIRELAND.term_codes ON term_codes.tmc_auto_key = s1.tmc_auto_key
内部联接
(
选择 CR_DETAIL.ENTRY_DATE LAST_PYMT, MAX(CR_DETAIL.CRD_AUTO_KEY),
CR_DETAIL.AMOUNT、CR_DETAIL.CMP_AUTO_KEY
来自 CR_DETAIL
按 CR_DETAIL.CRD_AUTO_KEY、CR_DETAIL.CMP_AUTO_KEY、CR_DETAIL.ENTRY_DATE、CR_DETAIL.AMOUNT 分组
) s2
在 s1.CMP_AUTO_KEY = s2.CMP_AUTO_KEY
由 s1.company_name 订购
)
GROUP BY COMPANY_NAME、AR_BALANCE、MAX_CREDIT_AR、OFFSET_BALANCE、TERM_CODE
ORDER BY AR_BALANCE DESC
不工作(返回每家公司的每一笔金额,而不仅仅是最近的)
选择 COMPANY_NAME、TERM_CODE、 MAX(LAST_PYMT) AS LAST_PYMT_REC,AMOUNT, AR_BALANCE、MAX_CREDIT_AR、OFFSET_BALANCE 作为 CREDITBAL_W_AP_OFFSETS 从 ( 选择公司名称,s2.LAST_PYMT,s2.AMOUNT, CURRENT_BALANCE 作为 AR_BALANCE, (CURRENT_BALANCE - AP_TOTAL) 作为 OFFSET_BALANCE, TERM_CODES.TERM_CODE, AP_TOTAL, MAX_CREDIT AS MAX_CREDIT_AR 来自公司 s1 左外连接 CTIRELAND.term_codes ON term_codes.tmc_auto_key = s1.tmc_auto_key内连接 ( 选择 CR_DETAIL.ENTRY_DATE LAST_PYMT, MAX(CR_DETAIL.CRD_AUTO_KEY), CR_DETAIL.AMOUNT、CR_DETAIL.CMP_AUTO_KEY 来自 CR_DETAIL 按 CR_DETAIL.CRD_AUTO_KEY、CR_DETAIL.CMP_AUTO_KEY、CR_DETAIL.ENTRY_DATE、CR_DETAIL.AMOUNT 分组 ) s2 在 s1.CMP_AUTO_KEY = s2.CMP_AUTO_KEY
按 s1.company_name 订购 ) GROUP BY COMPANY_NAME、AR_BALANCE、MAX_CREDIT_AR、OFFSET_BALANCE、TERM_CODE、AMOUNT ORDER BY AR_BALANCE DESC
【问题讨论】:
-
在所选列的列表中使用
sum(AMOUNT),而不是AMOUNT是否可以满足您的需求? -
@SQLUSER999 尝试仅选择
MAX(LAST_PYMT) AS LAST_PYMT_REC, AMOUNT并检查您是否获得预期结果