Member 13932549 Ответов: 3

SQL-запрос, чтобы запланировать матч между командами


I have a table with these columns like,
country
-------
India
Pak
Aus
I need to generate the output like,
Output:
-------
India vs Aus
India vs Pak
Pak vs Aus


Что я уже пробовал:

Я пробовал использовать Sqlsever joins с использованием row_numbers (), но не смог решить эту проблему . Может ли кто - нибудь помочь мне в этом?

3 Ответов

Рейтинг:
1

OriginalGriff

Google-ваш друг: обязательно посещайте его часто.

Базовый google дал мне более 6 миллионов просмотров: комбинации sql - поиск Google[^] - перейдите по любой ссылке (в значительной степени), и вы найдете решение.


Рейтинг:
1

Member 14940927

с командами
AS (выберите команду "Индия"
От двойника
СОЮЗ ВСЕХ
Выберите команду "Пак"
От двойника
СОЮЗ ВСЕХ
Выберите команду "Aus"
От двойника
)
ВЫБЕРИТЕ ОТДЕЛЬНЫЙ СЛУЧАЙ
Когда t1.team >= t2.team, то t2.team
Еще Т1.команда
КОНЕЦ || ' VS '||
ДЕЛО
Когда t1.team >= t2.team, то t1.team
Еще Т2.команда
Конец играм
Из команд Т1
перекрестное соединение команд Т2
Где t1.team != t2.team
Заказ по играм;

ВЫХОД :
-------
Совпадения
Австралии против Индии
Аус против Пака
Индия против Пака


CHill60

Причины моего понижения голоса:
- вопрос явно помечен как SQL-сервер, но это решение написано для Oracle (или другой базы данных, которая использует dual - определенно не SQL-сервер)
- Это действительно неэффективный запрос. Достаточно простого самосоединения - см. Решение 2

Рейтинг:
0

MadMyche

Вы находитесь на правильном пути с использованием соединения; сложная часть заключается в выборе того, какой оператор(ы) использовать на нем.

DECLARE @table TABLE (
   ndx INT IDENTITY(1,1) NOT NULL,
   Team VARCHAR(16)
)
INSERT @table
VALUES ('One')
,      ('Two')
,      ('Three')

SELECT  t1.Team, t2.Team
FROM       @table  t1
INNER JOIN @table  t2 ON t1.ndx < t2.ndx

Верну тебе это
Home  Guest
----  -----
One   Two
One   Three
Two   Three