|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
SQL Server 2017 enterprise Данные, приходящие из внешней системы имеют вид: Код: sql 1. 2.
Необходимо получить таблицу: Фамилия ИмяКолесников ИванДмитриев ПётрРоманин Алексей Там в оригинале чуть сложнее: Но в том виде, в каком сформулирован вопрос выше, решит мою проблему. Из внешней системы приходит таблица: Проект дата ... ... ... Ответственный (фамилия) Ответственный (имя) ...А ............ Колесников/Дмитриев/Романин Иван/Пётр/Алексей...Б ............ Колесников/Щеколдин Иван/Дмитрий...В ............ Щеколдин/Дмитриев/Романин Дмитрий/Пётр/Алексей... Нужно разбить её на 3:
Почему такая таблица через жопу? долго объяснять, но на внешнюю систему никак не повлиять. Начал отталкиваться от решения: Код: sql 1. 2.
Но невозможно сделать потом join по id, поскольку все значения перемешаны. А выделенную красным строку не убрать. Для приведённого в предыдущем спойлере усложнения Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 12:38 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Решения на основе string_split не гарантируют правильного результата, ибо https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15 Выходные строки могут быть расположены в любом порядке. Порядок не обязательно совпадает с порядком подстрок во входной строке. Пишите собственную функцию парсинга строки, гарантирующую результирующий порядок подстрок. Примеров реализации масса, в том числе и на этом форуме. Из вчерашнего - 22199220 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 13:00 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
string_split не возвращает порядковый номер элемента. Можно использовать альтернативный реализации string_split (CLR, UDF) Можно вычислять порядок вот так Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 13:02 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Charles Weyland SQL Server 2017 enterprise Данные, приходящие из внешней системы имеют вид Каким образом данные приходят? Через линкед сервер, по почте, через API? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 13:19 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Код: 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.
projectFNАКолесниковИванАДмитриевПётрАРоманинАлексейБКолесниковИванБЩеколдинДмитрийВЩеколдинДмитрийВДмитриевПётрВРоманинАлексей ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 13:46 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
msLex Можно вычислять порядок вот так Код: sql 1. 2. 3. 4. 5. 6.
valuernИван1Иван2Пётр3Алексей4 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 13:51 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
В 2017 можно через json: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 15:37 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
Добрый день! Я извиняюсь. Когда выполняю этот код, получаю в ответ - "Выполнение команд успешно завершено. ", но ничего другого не вижу. Я так понимаю что где то создается таблица, может временная, но где ее посмотреть? Очень плохо знаю sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2020, 06:06 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
declare создает переменную @names nvarchar(200) и задает её значение = 'Иван/Пётр/Алексей' ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 02:58 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Волшебство рекурсий: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 11:50 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Модератор: Агрох, Уважаемый волшебник, а не хотите сначала научится не путать разделы форума? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 11:57 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Модератор: Агрох, Уважаемый волшебник, а не хотите сначала научится не путать разделы форума? Ок, учту. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 12:14 |
|
Как строку xxx/yyy/zzz превратить в столбец и пронумеровать? непросто
|
|||
---|---|---|---|
#18+
Очень интересная ветка получилась. спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 13:59 |
|
|
start [/forum/topic.php?fid=46&msg=40000608&tid=1685614]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 166ms |
0 / 0 |