Возврат последней суммы для каждого элемента с одинаковым ref_id - PullRequest
0 голосов
/ 20 марта 2019

У меня есть 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

Я хочу суммировать количество каждой строки с уникальным идентификатором и последней датой. Таким образом, вывод должен быть 4 + 0.

Ответы [ 3 ]

1 голос
/ 20 марта 2019

Вы можете использовать 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;

Тест по дБ <> скрипка здесь

1 голос
/ 20 марта 2019

С этим запросом:

select ref_id, max(date) maxdate 
from creditdetails
group by ref_id

вы получаете все последние date с для каждого ref_id,так что вы можете join положить его на стол creditdetails и суммировать по amount:

select sum(amount) total 
from creditdetails c inner join (
  select ref_id, max(date) maxdate 
  from creditdetails
  group by ref_id
) g
on g.ref_id = c.ref_id and g.maxdate = c.date
0 голосов
/ 20 марта 2019

Я думаю, что вы хотите что-то вроде этого,

select sum(amount) 
 from table
where date = ( select max(date) from table);

с пониманием, что ваш столбец date , кажется, не в стандартном формате, поэтому я не могу сказать, еслидля правильной работы он должен быть отформатирован в запросе.

...