【发布时间】:2017-10-12 16:30:32
【问题描述】:
我正在尝试在 Oracle 上运行查询。我有一个账户的已结算付款表,我有一个查询,其中包含最后三个已结算金额以及任何已注销的金额,用于我需要此信息的任何帐户。
但是,有些帐户是按周计算的,对于这些帐户,我想将他们的每周结算汇总到他们的每月组中。这是我到目前为止的代码:
SELECT *
FROM (
SELECT *
FROM (
SELECT gwod.account_id,
gwod.charge_period_start,
SUM(gwod.total_due_on_charge) total_due_on_charge,
SUM(gwod.amount_written_off) amount_written_off,
DENSE_RANK() over (PARTITION BY gwod.account_id
ORDER BY charge_period_start DESC) rownumber
FROM report.accounts_write_off gwod
WHERE account_id IN (‘account_number’)
GROUP BY gwod.account_id,
gwod.charge_period_start
HAVING SUM (gwod.total_due_on_charge) <> 0) t1
WHERE t1.rownumber <=3)
PIVOT (MAX(charge_period_start) charge_period,
MAX(total_due_on_charge) total_due_on_charge,
MAX(amount_written_off) amount_written_off
FOR rownumber IN (1,2,3))
ORDER BY account_id.*
这非常有效,但对于基于每周的帐户,所以与其提取最后三个已结算的每周金额,即 25-09-17、18-09-17、11-09-2017,我想要以提取 9 月、8 月和 7 月的总付款。
我希望这一切都有意义。
【问题讨论】: