|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
Всем привет, Не получается никак написать запрос, который будет выводить крайнюю положительную сумму и дату, когда она была начислена. Исходные данные следующие: Есть множество аккаунтов, у каждого аккаунта есть начисления в каждом месяце по определённым услугам, например: Аккаунт 555 имеет начисление 500 на дату 01.01.2019 по услуге 1, начисление 500 на дату 01.02.2019 по услуге 1 и -500 по услуге 2. То есть в итоге мне нужно получить сумму 500 на 01.01.2019, поскольку сумма на 01.02.2019 будет равна 0. Поэтому условие where sum > 0 не подходит, условие having sum(sum) > 0, last тоже не подходит, поскольку тогда данный аккаунт будет исключён из итоговой выборки. Может, кто подскажет, что почитать и как это можно осуществить. Для конкретного аккаунта запрос работает (приведу ниже). Но для всего списка нет Вот запрос, который писал я, он работает, только если лайкать по конкретному аккаунту, а не по всем select distinct account_number, data from ( select c1.account_number, trunc(c1.pay_date,'month') data, sum(c1.sum) summa from exchange.charge_groups_sd c1 where c1.account_number = account_number and c1.account_number like '2000000341779' and pay_date < to_date('01.03.2019','dd.mm.yyyy') having sum(c1.sum) > 0 group by c1.account_number, trunc(c1.pay_date,'month') order by trunc(c1.pay_date,'month') desc) t where data in (select max(data) from( select c1.account_number, trunc(c1.pay_date,'month') data, sum(c1.sum) summa from exchange.charge_groups_sd c1 where c1.account_number = account_number and c1.account_number like '2000000341779' and pay_date < to_date('01.03.2019','dd.mm.yyyy') having sum(c1.sum) > 0 group by c1.account_number, trunc(c1.pay_date,'month') order by trunc(c1.pay_date,'month') asc) t) order by data ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 12:16 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 12:30 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
Ты ведь уже спрашивал . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 12:30 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
AmKad, да, спасибо за ответ, но через last у меня ничего не получилось, ну или просто я туплю и не могу понять, как им грамотно пользоваться ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 12:39 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
o.makarov, Давай подумаем о том, какие у тебя варианты. Либо дальше бицца головой об стену, либо все-таки представить на суд общественности репрезентативные тестовые данные с описанием желаемого результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 12:44 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
AmKad, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Должно получиться Код: plsql 1. 2. 3. 4. 5.
То есть суммируется сумма по всем услугам и выводится с датой, когда сумма по всем услугам была больше 0 последний раз ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 13:44 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
o.makarov, Прошу прощения, по аккаунту 555 сумма 400, а не 600 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 13:45 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
o.makarovo.makarov, Прошу прощения, по аккаунту 555 сумма 400, а не 600 555 500 1 01/11/2018 555 500 1 01/03/2019 555 -500 2 01/03/2019 555 400 3 01/03/2019 Код: plsql 1. 2. 3. 4. 5.
зы суміруете с нарастающим итогом, и выводите мах где больше 0 ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 13:52 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
o.makarovТо есть суммируется сумма по всем услугам и выводится с датой, когда сумма по всем услугам была больше 0 последний раз 888 - с суммой согласен, с датой нет 777 - согласен 555 - 900, дату попал 505 - сумма не та, дата не та ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 13:53 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
Stax, Видимо не очень я объясняю. Нужна сумма больше 0 за месяц, То есть если есть следующие начисления Код: plsql 1. 2. 3. 4. 5. 6. 7.
Должно вывести 555 300 01/03/2019 Поскольку последний месяц, когда сумма была больше 0, это 01/03/2019. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 13:59 |
|
Вывести положительную сумму на последнюю даты
|
|||
---|---|---|---|
#18+
o.makarovStax, Видимо не очень я объясняю. Нужна сумма больше 0 за месяц, То есть если есть следующие начисления Код: plsql 1. 2. 3. 4. 5. 6. 7.
Должно вывести 555 300 01/03/2019 Поскольку последний месяц, когда сумма была больше 0, это 01/03/2019. допилите Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
зы тестовые данные желательно в форме "with" ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2019, 14:20 |
|
|
start [/forum/topic.php?fid=52&msg=39799269&tid=1882590]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 297ms |
total: | 438ms |
0 / 0 |