我有2张桌子,一张是贷方,另一张是贷方明细。 Creditdetails每天为每个信用额创建一个新行。
ID Amount ref_id date
1 2 1 16.03
2 3 1 17.03
3 4 1 18.03
4 1 2 16.03
5 2 2 17.03
6 0 2 18.03
我想总结具有唯一ID和最后日期的每一行的数量。因此输出应为4 + 0。
答案 0 :(得分:1)
您可以使用ROW_NUMBER来过滤每个ref_id的最新金额。
然后求和。
SELECT SUM(q.Amount) AS TotalLatestAmount
FROM
(
SELECT
cd.ref_id,
cd.Amount,
ROW_NUMBER() OVER (PARTITION BY cd.ref_id ORDER BY cd.date DESC) AS rn
FROM Creditdetails cd
) q
WHERE q.rn = 1;
对 db <>小提琴here
的测试答案 1 :(得分:1)
使用此查询:
select ref_id, max(date) maxdate
from creditdetails
group by ref_id
您将获得每个date
的所有最后ref_id
,
所以您可以将join
放在表creditdetails
中并求和到{{1} }:
amount
答案 2 :(得分:0)
我想你想要这样的东西,
select sum(amount)
from table
where date = ( select max(date) from table);
了解到您的 date 列似乎不是标准格式,因此我无法确定是否需要在查询中对其进行格式化才能正常工作。