|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
FB25 Есть таблица два поля Код: sql 1. 2. 3.
Пример: 07.01.201815.6509.01.20185.520.01.201811.517.04.20181.6521.04.201812.627.04.20185.7508.05.20183.3508.05.201813.805.06.20182.2507.06.201835.507.06.20185.1527.08.201810.0502.10.201811.512.10.20180.0525.12.201811.0529.12.20181.35 Задача: необходимо получить результат с двумя значениями за указанный период. 1. Сумма всех значений поля F_KOL (проблем с этим нет) 2. Сумма чисел полученная по следующему алгоритму: - если за календарный месяц есть хоть одна запись, то к итоговой сумме необходимо прибавить значение например 50 - если за календарный месяц нет ни одной записи, то из итоговой суммы необходимо вычесть значение например 30. Пример: Период: февраль 2018 - март 2019 Первая сумма - вопросов нет Вторая сумма=-30-30+50+50+50-30+50-30+50-30+50-30-30-30=60 (-фев18-март18+апр18+май18+июнь18-июль18+авг18-сент18+окт18-нояб18+дек18-янв19-фев19-март19) Вопрос: в какую сторону копать по ВТОРОЙ сумме? - Я бы изменил мир, но Бог не дает исходники... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 15:11 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
27.05.2019 15:11, Snickbw пишет: > в какую сторону копать по ВТОРОЙ сумме? SUM(CASE WHEN ... THEN ... END) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 15:15 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Мимопроходящий, не копнёт, чувствую. Snickbw, попробуй: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 16:54 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
KreatorXXIМимопроходящий, не копнёт, чувствую. Вот и я столкнулся с той же проблемой, что и в вашем примере. В таблице нет записей, за те месяцы, за которые необходимо вычесть 30 из второй суммы. Как и у меня, так и вашем примере в результативной таблице нет группировочной записи по месяцам -фев18-март18-июль18-сент18-нояб18-янв19-фев19-март19. (см.пример данных в первом посте) В итоге за эти отсутствующие месяцы из второй суммы ничего не вычитается. Поэтому то я обратился на форум. Здесь как-то искусственно надо добавить в исходную таблицу записи за те месяцы которых нет в исходной таблице. Например через конструкцию Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
а уже потом имея записи по всем месяцам (в том числе и отсутствующих в исходной таблице) группировать по месяцам и годам с подсчётом двух сумм, при этом учитывая минус 30 и плюс 50 в зависимости от принадлежности записи к исскуственной таблице или исходной. ИЛИ сделать по другому: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
З.Ы. 80 в поле D5 (это 50+30) и надо вычесть лишние 30, т.к. во второй таблице суммируются 30 за все месяцы за период ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 09:05 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Snickbw, да, проблема, не подумал. Тогда execute block (хранимка) c циклом по месяцам и годам, и запрос для каждого месяца. Не знаю, можно ли посредством запроса к rdb$database получить список нужных дат, месяцев, годов. Либо на клиенте обработать. На крайний случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 11:46 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Тривиально вести таблицу-календарь и строить запрос левым джойном от неё не предлагать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 12:34 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
KreatorXXIНе знаю, можно ли посредством запроса к rdb$database получить список нужных дат, месяцев, годов.Можно. Но производственным календарём лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:06 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, кто её будет вести? Уж лучше тогда GTT сделать, если по-другому никак. И опять же клиента никто не отменял, на нём можно отчёт добить отсутствующими данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:08 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
KreatorXXIкто её будет вести?проинитить разом лет на 100 вперед, а там или осел или падишах... WildSeryНо производственным календарём лучше.раз в год по мере выхода переноса выходных подновлять. KreatorXXIможно отчёт добить отсутствующими данными.это куда более хлопотно. KreatorXXIУж лучше тогда GTT сделатьсмысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:13 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyKreatorXXIкто её будет вести?проинитить разом лет на 100 вперед, а там или осел или падишах... Крон на ночь -наше фсё. Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
Дополнительные атрибуты периода - по вкусу. Ivan_PisarevskyРаз в год по мере выхода переноса выходных подновлять. Та у Думы семь пятниц на неделе, она ж всё о России днём и ночью думкает. В начале года одно надумкает, потом по ходу пару раз передумкает. Я исхожу из того, что лучше всех с любым делом справляется тот, кому оно надо. Кому из бухгалтеров первому понадобится воспользоваться неким автоматом на некий период для... замнём для ясности, но выходные он, автомат, учитывать обязан, тот на этот период и расставит выходные. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 14:42 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
календарь не нужен, есть RDB$RELATIONS 21847529 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 16:32 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
vvvaitкалендарь не нужен, есть RDB$RELATIONS 21847529 Ога. Джойнить потом с этой хренью по каждому чиху, статусы периодов с точки зрения разных отделов к ней присобачивать и всё такое, а чё. Что бы ни делать, лишь бы за... за... устать, в общем. Самый правильный проход к зубам в стоматологических целях давно известен, классика. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 19:37 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, а если календаря нет, и прав на создание метаданных тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 19:45 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
vvvaitа если нет прав на создание метаданных Я бы посоветовал уволиться. А то потом начнут требовать поквартальные-помесячные-понедельные отчёты всех мастей и чтоб летало мухой. И виноват всегда будет сам понимаешь кто. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 19:51 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаvvvaitкалендарь не нужен, есть RDB$RELATIONS 21847529 Ога. Джойнить потом с этой хренью по каждому чиху, статусы периодов с точки зрения разных отделов к ней присобачивать и всё такое, а чё. Что бы ни делать, лишь бы за... за... устать, в общем. Самый правильный проход к зубам в стоматологических целях давно известен, классика. Получается, совсем красивого варианта нет. Вот мы производственный календарь ведём по отклонениям. Получается, прокол. Надо писать всё. Но у нас это (ведение производственного календаря) хотя бы оправдано. Функционал обширен и эти данные востребованы. В системах с ограниченным функционалом не так всё. В других серверах какие-нибудь варианты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 10:47 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
KreatorXXI, В пустой БД всегда можно генерировать счётчик. Код: sql 1. 2. 3. 4. 5. 6.
затем перемножить его на самого себя сколько надо раз и дальше приклеить к нему дату ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 11:57 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
WildSery, KreatorXXI, Можно и универсальный счётчик засандалить: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 11:53 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Tonal, И в чём же его универсальность, если он даже до 4 лет считать не умеет? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 11:56 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
WildSery, Да хоть до ста. ;) $ aptitude show firebird3.0-server Пакет: firebird3.0-server Версия: 3.0.3.32900.ds4-3ubuntu6 Новый: да Состояние: установлен ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 12:15 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Tonal, А так ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Чего только люди не сделают чтобы не писать процедуру... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 13:23 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Ну или вариант для дат Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 13:26 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
TonalWildSery, Да хоть до ста. ;)Зачем мне сто ДНЕЙ, если я спросил о четырёх ГОДАХ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 13:46 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, хорошая вещь. Возьму навооружение, может пригодиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:15 |
|
Посоветуйте по ЗАПРОСУ
|
|||
---|---|---|---|
#18+
KreatorXXI, в моей БД уже давно такая процедура для итератора по датам ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 15:17 |
|
|
start [/forum/topic.php?fid=40&fpage=23&tid=1560693]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 174ms |
0 / 0 |