Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Имеется две таблицы. В одной таблице хранится информация по клиентам (около 30 полей). Вторая таблица состоит из полей (5 полей, которые есть в первой таблице), в которых прописаны условия, по которым необходимо проставить один из флагов(6 поле из таблицы 2) в первую таблицу. структура таблицы 1: LOAN_CL EFF_DT DT_CH_PRC BASE_CCY_F SIMILAR_FДепозитный договор 19.03.2008 01.01.1900 1 NКредитный договор 22.03.2006 01.01.1900 0 NКредитный договор 17.11.2019 01.01.1900 1 Y структура таблицы 2: (знаки >= и < условия для значений соответствующих полей из таблицы 1, символ # означает логическое НЕ) LOAN_CLEFF_DTDT_CH_PRCBASE_CCY_FSIMILAR_FRVSRКредитный договор>=2019-03-011YYКредитный договор>=2019-03-011YYКредитный договор<2019-03-01<2019-03-011YNКредитный договор#YNКредитный договор0N помогите, пожалуйста, разработать корректный алгоритм, который будет сравнивать все условия и выставлять в первую таблицу в конце соответствующий флаг из 6го поля 2й таблицы. своей фантазии хватило только на такой вариант, но он некорректно отрабатывает. очевидно, даже алгоритм сравнения не очень правильный. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. так же в case пробовал для полей с датами искать по первым двум символам вместо сравнения Код: sql 1. но тоже никакого толка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2019, 17:31 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
Без кавычек 2019-03-01 = 2015, и это целое число, а не дата. Преобразование в дату этого числа даст 9 июля 1905 года. Заключайте даты в одиночные кавычки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2019, 18:16 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
iapБез кавычек 2019-03-01 = 2015, и это целое число, а не дата. Преобразование в дату этого числа даст 9 июля 1905 года. Заключайте даты в одиночные кавычки. С этим нет никаких проблем, строка в дату конвертируется корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 09:04 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 09:38 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
AVRomanenkoВ одной таблице хранится информация по клиентам (около 30 полей).А тип EFF_DT какой, date, или строка? AVRomanenkoстрока в дату конвертируется корректно.Вы это проверяли? Я бы всё таки использовал CONVERT, и явное указание формата AVRomanenkoусловия, по которым необходимо проставить один из флагов(6 поле из таблицы 2) в первую таблицу.Нужно проставить поле 6 из таблицы 2 в таблицу 1, но вы зачем то вычисляете RVSR_F. AVRomanenkoсвоей фантазии хватило только на такой вариант, но он некорректно отрабатывает. очевидно, даже алгоритм сравнения не очень правильный.В нём даже не учитываются условия >, <, и т.д. Я бы сделал подзапрос из table_2, в котором разложил бы поля EFF_DT и DT_CH_PRC на даты и условия Это и отладить легко, как отдельный запрос. А потом уже сделал джойн этого подзапроса с table_1, со связкой типа Код: sql 1. 2. 3. 4. 5. 6. 7. Писать лень, запрос получится на несколько страниц :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 09:51 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
courtAVRomanenko, посмотри здесь 13088610 имхо, лучший выход т.е. что имеется в виду: вот эту табличку AVRomanenkoструктура таблицы 2: (знаки >= и < условия для значений соответствующих полей из таблицы 1, символ # означает логическое НЕ) LOAN_CLEFF_DTDT_CH_PRCBASE_CCY_FSIMILAR_FRVSRКредитный договор>=2019-03-011YYКредитный договор>=2019-03-011YYКредитный договор<2019-03-01<2019-03-011YNКредитный договор#YNКредитный договор0N нужно привести к такому виду (в СТЕ например), и затем джойнить с таб1, - EFF_DT и EFF_DT по between, остальное по like LOAN_CLEFF_DT_minEFF_DT_maxDT_CH_PRC_minDT_CH_PRC_maxBASE_CCY_FSIMILAR_FRVSRКредитный договор2019-03-013000-01-011900-01-013000-01-011YYКредитный договор1900-01-013000-01-011900-01-013000-01-011YYКредитный договор1900-01-012019-03-011900-01-012019-03-011YNКредитный договор1900-01-013000-01-011900-01-013000-01-01%[^Y]NКредитный договор1900-01-013000-01-011900-01-013000-01-010%N ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 09:55 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
AVRomanenko, Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:22 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
alexeyvg, авторВы это проверяли? Я бы всё таки использовал CONVERT, и явное указание формата да, проверял, все хорошо с этим. авторНужно проставить поле 6 из таблицы 2 в таблицу 1, но вы зачем то вычисляете RVSR_F. в таблице 2 6 поле - это флаг, который должен получиться, если все 5 условий удовлетворены. если на примере исходных таблиц, то в первой таблице напротив 3й записи должен быть флаг Y (так как все 5 столбцов прошли условие), в остальных строках N. авторВ нём даже не учитываются условия >, <, и т.д. их не нужно учитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:33 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
invm, Спасибо за скрипт! Вы не правильно поняли, в таблицу 1 не надо делать UPDATE поля SIMILAR_F, а просто добавить в SELECT в конце флаг (если 5 полей таблицы 1 прошли 5 условий таблицы 2, то проставить флаг (а какой именно указан в 6м поле таблицы 2, этот флаг для наглядности). соответственно, в первой таблице должен быть Y напротив 3й строки, N напротив остальных строк). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:37 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
AVRomanenko, имо практичнее написать CLR функцию в такой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:06 |
|
||
|
Связка таблиц по нескольким полям для проставления необходимого флага
|
|||
|---|---|---|---|
|
#18+
AVRomanenkoавторВ нём даже не учитываются условия >, <, и т.д. их не нужно учитывать.Ээээ, тогдя я не понял условия задачи, что означает: AVRomanenkoзнаки >= и < условия для значений соответствующих полей из таблицы 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 17:12 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39830822&tid=1687625]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 397ms |

| 0 / 0 |
