SQL запрос, который выведет все возможные сочетания из одного столбца
DECLARE @Colors TABLE(Name nvarchar(20))
INSERT INTO @Colors
VALUES ('green'),
('black'),
('yellow'),
('blue'),
('white'),
('red'),
('brown')
Необходимо написать SQL запрос который выведет результат в 4 столбца(Name1,Name2,Name3,Name4)все возможные сочетания для значений переменной, где n = 7(семь цветов) и k = 4(четыре различных цвета в одной строке)
Пример для 4 цветов и 3 столбцов. Результат такой
| Name1 | Name2 | Name3 |
|---|---|---|
| green | black | yellow |
| blue | black | green |
| blue | black | yellow |
| green | blue | yellow |
Это тестовое задание. Ни как не подступиться, у меня есть представление о базовых запросах SQL, здесь для меня, что-то не тривиальное. Мне даже сложно оценить сложность этой задачи. Возможно решение простое, просто еще не достаточно опыта и практики. Буду очень благодарен если подскажите в каком направлении двигаться. Что попробовать. Благодарю.
Ответы (1 шт):
SELECT t1.color color1,
t2.color color2,
t3.color color3,
t4.color color4
FROM @Colors t1
JOIN @Colors t2 ON t2.color NOT IN (t1.color)
JOIN @Colors t3 ON t3.color NOT IN (t1.color, t2.color)
JOIN @Colors t4 ON t4.color NOT IN (t1.color, t2.color, t3.color);
нужно будет исключить повторения, чтобы в каждой строке были только уникальные сочетания цветов.
SELECT t1.color color1,
t2.color color2,
t3.color color3,
t4.color color4
FROM @Colors t1
JOIN @Colors t2 ON t2.color > t1.color
JOIN @Colors t3 ON t3.color > t2.color
JOIN @Colors t4 ON t4.color > t3.color;