|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
infinitidolla komrad, тоесть в марке блок dog работал нормально а в апреле сломался. он может сломаться и в мае/июне/июле/итд, если в поле Comment после номера договора не будет пробела, который вы ищете ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 17:17 |
|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
komrad, в общем дошло что изз а left запрос возвращает неправильную длинну изза этого ошибка тперь не понимаю как ее посчитать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 17:46 |
|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
infinitidolla, ооо я прям как чуял что по алиасу "dt" будет диасофтик :) первое: искать тип комиссии из назначения платежа - огонь. вы разве не можете выйти на связи документа с карточным договором? второе: убирайте нафиг стандартные хинты диасофта вида option (force order, loop join, keepfixed plan) и жесткую привязку к индексам три: не используйте sync-таблицы, обращайтесь напрямую к прародителям четыре: брать код с формы документов такое себе решение, он сильно перегружен. пять: почему вы не хотите параметризировать запрос что бы пользователь указывал интервал дат сам а не извращаться с EOMONTH? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 17:52 |
|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
felix_ff второе: убирайте нафиг стандартные хинты диасофта вида option (force order, loop join, keepfixed plan) и жесткую привязку к индексам выйдите из зоны комфорта, положитесь на сервер - он знает лучше ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2021, 18:19 |
|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
infinitidolla, Задам Вам небольшой вектор: src Код: sql 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. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90.
рассуждения не по mssql в большей степени все зависит от того подвязаны ли расчетные счета на договорах, если да то вы с документов комиссии можете достаточно просто определить сам договор. в той же степени это касается типа комиссии возможно есть вариант не находить ее тип по назначению платежа, а если данные документы формируются разными начислениями выйти через документ на само начисление. плюс корреспонденция счетов вам должна явно говорить в каком случае это документ комиссии а в какой случае требование у вас обычно документы комиссии будут вида дт: 40[5-8] кт: 70601 ну или в обратку что очень редко если это не какой нибудь межфил или исправительные проводки. поэтому зная это вы можете предполагать что найдя документ 40702 -> 70601 счет по дебету будет расчетным счетом клиента с которого списывается комиссия, если он подвязан под договором какой либо статической связью вы с него сможете выйти на сам договор, поэтому уже вам не нужно будет стараться выцепить номер договора из назначения платежа. если таких связей нет или у вас какие то специфичные условия что вы там какой то абстрактный договор эквайринга ищете, ну тогда да, парсить назначение, но он все равно обычно соответствует какому то заранее заданному шаблону, может вам стоит расмотреть вариант разбивая строку на слова по разделителю в виде пробела и искать вхождение определенных паттернов, зависит от ситуации. но это точно будет лучше чем искать по части строки с помощью charindex/patindex. не применяйте по крайней мере фильтров поиска подстроки сразу, пока не нашли все нужные вам документы, потому что оптимизатор запросов иногда бывает что может построить план который будет рассчитывать ваши скалярные объекты до применения необходимой фильтрации которая отсеивает ненужные документы. из-за этого можете получить ситуацию когда под расчет скаляра попадет документ назначение платежа которого никак не нацелено на ваши алгоритмы поиска. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 01:55 |
|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
felix_ff, спасибо большое! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 10:38 |
|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
komrad, Спасибо большое за ответы для меня как для новичка этот код дался не легко учитывая что я только два месяца как этим всем занимаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2021, 17:13 |
|
Помогите пожалуйста разобраться с датами
|
|||
---|---|---|---|
#18+
infinitidolla,felix_ff полностью согласен с тем, что написал felix_ff, особенно про хинты и ноулоки по индексам. Но совет - внимательнее смотрите структуру таблиц, которая учувствует в запросе. Зачем смотреть написал под спойлером. Не по SQL, а по конкретикеХотел бы обратить внимание, что если в используемых таблицах есть столбцы вида BeginDate,StartDate и EndDate (они могут по разному называться но смысл у них един - это даты начала и окончания действия и\или связи) , особенно таблицы связи со счетами, то обязательно проставляйте там условие на то, что связь рабочая на дату или период дат, по которой строится отчет. Например в последнем запросе от уважаемого felix_ff - сразу бросается в глаза таблица tCrdAccountLink. Живой пример из карт. Счет карты для резидента 40817, а для нерезидента 40820 и если клиент сначала был нерезидентом и карту получал, как нерез, а потом получил вид на жительство, то банк обязан открыть новый счет в новом балансе 40817 и перепривязать его к карте (по сути к договору, но не об этом). Таким образом у клиента вместо 40820, теперь появится 40817 и по вот этому запросу за прошлую дату Код: sql 1. 2.
мы получим 2 записи, вместо одной. В блоке where есть , правда, условие про flag=2, мне сейчас неохота проверять, но возможно - это признак того, что эта связь - действующая. Это условие неверно отработает за прошлые периоды, которые были до смены гражданства. Лучше все таки на даты действия закладываться. P.S. Но felix_ff честно написал, что только указывает верное направление, дальше сами :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 15:38 |
|
|
start [/forum/topic.php?fid=46&msg=40062628&tid=1684809]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 331ms |
total: | 452ms |
0 / 0 |