|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
Добрый день, есть подобная выборка, состоящая из 20 столбцов, хотел бы узнать у гуру sql как отобрать из данной выборки те строки в которых содержаться только уникальные значения во всех 20 столбцах (в данной выборке это только вторая строка), например можно ли такие значения отобрать как-то попроще через where или какой-то другой лаконичный способ? Знаю можно сделать через unpivot или через string_split но интересует решение попроще. Спасибо. select * from ( select 1 a, 2 b, 3 c, 4 d, 2 e, 3 f, 5 g, 7 h, 8 i, 9 j, 11 k, 12 l, 13 m, 15 n , 16 o, 17 p, 18 q, 4 s, 19 t , 20 u union select 1 ,2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 , 20 union select 21 ,22, 23, 24, 25, 26, 27, 28, 29, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 , 220 union select 21 ,22, 23, 24, 25, 22, 27, 28, 29, 210, 210, 210, 213, 214, 215, 216, 217, 218, 219 , 220 ) x ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 10:04 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
Nicolay, Третья строка тоже с уникальными значениями. Имхо проще всего будет сделать через unpivot. Все остальное будет, в том или ином виде, вариацией на ту же тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 10:26 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
Nicolay, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 10:56 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 11:00 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
Guf Nicolay, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Замечательное решение, я правильно понимая что cross apply позволяет обратиться к каждому столбцу таблицы X в отдельности и делает это в такой последовательности: первая строка таблицы X cross apply (select count(distinct v.c) from (values (x.a), (x.b), (x.c), (x.d), (x.e), (x.f), (x.g), (x.h), (x.i), (x.j), (x.k), (x.l), (x.m), (x.n), (x.o), (x.p), (x.q), (x.s), (x.t), (x.u)) v(c)) uniq(val) where uniq.val = 20 дальше вторая строка X на cross apply и так все 4 строки? то есть cross apply не ждет формирования всей таблицы X а применяется сразу по мере формирования таблицы X? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 11:58 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
Nicolay, Независимо от числа столбцов Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 12:44 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
invm Nicolay, Независимо от числа столбцов Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Спасибо, в значении столбцов м.б. не только значения типа int - но это не важно в данном случае, тк интересует только способ реализации. Ответьте пожалуйста на следующий вопрос: я правильно понимаю что cross apply позволяет обратиться к каждому столбцу таблицы X в отдельности и делает это последовательно для каждой строки X по мере формирования таблицы X? то есть cross apply не ждет формирования всей таблицы X а применяется сразу по мере формирования таблицы X? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 13:09 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
Nicolay, Apply обеспечивает выполнение правой части для каждой строки из левой. Как это будет обеспечиваться физически - не определено. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 13:23 |
|
выборка строк с уникальными значениями в столбцах
|
|||
---|---|---|---|
#18+
invm Nicolay, Apply обеспечивает выполнение правой части для каждой строки из левой. Как это будет обеспечиваться физически - не определено. Спасибо, отличный вариант решения без unpivot ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 14:34 |
|
|
start [/forum/search_topic.php?author=%D0%92%D0%BB%D0%B0%D0%B42020&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 699ms |
total: | 872ms |
0 / 0 |