Вернуть все возможные пары комбинаций значений для одного столбца в SQL - PullRequest
0 голосов
/ 10 апреля 2020

Я хотел бы получить все комбинации пар DISTINCT для таблицы:

Имя таблицы: Dancer

 id  name  
 1  Yaniv  
 2  Dan   
 3  Eli   
 4  Guy   
 5  Sara  
 6  Naama  
 7  Suzi   
 8  Vered  

* Результаты должны быть такими:

pairs  
Yaniv Dan  
Yaniv Eli  
Yaniv Guy  
Yaniv Sara  
Yaniv Naama  
Yaniv Suzi  
Yaniv Vered  
Dan Eli  
Dan Guy  
Dan Sara  
Dan Naama  
Dan Suzi  
Dan Vered  
Guy Sara  
Guy Naama  
Guy Suzi  
Guy Vered  
Sara Naama  
Sara Suzi  
Sara Vered  
Naama Suzi  
Naama Vered  
Suzi Vered 

Я пытался CROSS JOIN + WHERE предложение удалить идентичные имена как Yaniv Yaniv,Dan Dan ... и т. Д. Но я также получаю несколько комбинаций пар как

Yaniv Dan    
Dan Yaniv

Как я могу отфильтровать эти несколько пар .. ?? это мой SQL код:

Select D2.name + ' ' + D1.name  
From Dancer D1  
Cross join   
Dancer D2  
Where D1.name<>D2.name

Надеюсь, мой вопрос достаточно ясен.

1 Ответ

0 голосов
/ 10 апреля 2020

Если ваша цель - получить все столбцы имен со всеми другими именами в одном столбце, это будет считаться декартовым объединением.

Было бы что-то вроде следующего:

   Select a.Name +' ' + b.Name as ResultName
   from Table as a, Table as b

Это работает, если ваш столбец Имя содержит, как вы описали: Джон, Янив, Дан ... приведет к Джон Янив, Джон Имя, Янив Джон, Янив Дан. Однако, если ваши имена состоят из нескольких частей, таких как Sarah T, вы получите только одно имя с другими именами. Пример: Сара Т. Джон, Сара Т. Янив и др. c. Это не будет разбивать Сару и Т на отдельные результаты.

...