|
Как удалить дубли в поле после группировки?
|
|||
---|---|---|---|
#18+
Допустим есть таблица create table dbo.MainTable (col1 int, col2 int, col3 varchar(10), col4 varchar(10) ) Нужно сгруппировать записи по полям col1, col2 и для каждой группы строк вывести col3 через запятую, col4 аналогично select coalesce(string_agg(col3,','),'None') from dbo.MainTable group by col1, col2 Если у нас в какую-то группу попали строки с разными значениями поля, то все в порядке. Но как дубли в каждом из столбцов? Например в какой-то группе 4 строки, col3 = 'abc','All', 'All', 'abc' нужно получить 'All,abc' ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 14:48 |
|
Как удалить дубли в поле после группировки?
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 15:01 |
|
Как удалить дубли в поле после группировки?
|
|||
---|---|---|---|
#18+
invm, Если я правильно понял, мы в начале собираем все значения, потом разбираем одно целое по запятой, удаляя дубли, после чего опять собираем. Попробую, спасибо, но нет ли более простых вариантов, на случай если на месте таблицы большой запрос, а таких полей больше десятка? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 15:13 |
|
Как удалить дубли в поле после группировки?
|
|||
---|---|---|---|
#18+
Digimot но нет ли более простых вариантов Digimot если на месте таблицы большой запрос, а таких полей больше десятка? Если не пугает возможная некоторая деградация производительности, можете процесс формирования списка без дублей оформить функцией и скармливать ей результат string_agg. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2021, 15:53 |
|
|
start [/forum/search_topic.php?author=XCheSX&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 490ms |
total: | 635ms |
0 / 0 |