在给定时间内选择特定Acc,Nam的余额总和时遇到问题 .
SELECT Acc, Nam, SUM(Bal) FROM table WHERE
MAX(Par) = (SELECT Par WHERE Acc IN (101,102) AND Dat >1105 AND Dat <1405)
AND Acc IN (101,102) AND Dat >1105 AND Dat <1405
GROUP BY Acc, Nam
Acc --- Nam --- Bal --- Par --- Dat
101 --- One --- 150 --- 131 --- 1205
101 --- One --- 120 --- 132 --- 1205
101 --- One --- 160 --- 133 --- 1305
102 --- Two --- 190 --- 121 --- 1205
102 --- Two --- 110 --- 122 --- 1305
102 --- Two --- 150 --- 123 --- 1305
最终输出应该是:
Acc --- Nam --- Bal
101 --- One --- 280
102 --- Two --- 340
因此,它将按帐户和帐户名称分隔的期间内的所有余额的总和 . 只有每天最高Par数的余额应总计合计 . 请指教 .
UPDATE
我用下面的row_number方法做了,但我收到的只是所有行的总数(没有一些) . 以下是显示的代码:两个帐户,两个帐户说明,参数,日期和余额 . 我想看到两行,它们是给定帐户范围内所有日期的总和,并且在一天内具有最高参数编号 . 最终输出应该只有三列:帐户,名称和余额 . 此查询应该能够选择每天的最大参数并将所有这些最大值汇总到一个帐户 .
SELECT h.account, h.name, h.paramet, h.date, h.balance
FROM h
WHERE TRUNC(h.date) > '01-Jun-16' AND TRUNC(h.date) < '10-Jun-16'
AND h.account IN ('410212','410213')
AND h.fund LIKE 'SSPSP
2 回答
您可以使用
row_number()
:我有下一个与上述查询相关的问题 . 如何创建一个包含两个SUM(Bal)列的表,彼此具有不同的Date:
Acc --- Nam --- Bal(Dat1) - Bal(Dat2)
101 ---一个------- 280 ---------- 300
102 ---两个------- 340 ---------- 180