Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получение всевозможных вариантов  [new]
wql
Member

Откуда:
Сообщений: 7
Приветствую.
Есть таблица, которая состоит из позиции и вариантов значений на этой позиции
DECLARE @tmp TABLE(pos int, value int)
INSERT @tmp(pos, value)
VALUES
(1,0),
(1,1),
(2,0),
(2,1),
(3,0),
(3,1),
(3,2)


На выходе нужно получить примерно вот такое безобразие:
+

000
001
002
010
011
012
100
101
102
110
111
112

Т.е. задача сводится к тому, чтобы перебрать все возможные значения где pos - это позиция элемента,а value - варианты значений, которые эта позиция может принимать.
Кол-во позиций результирующего набора может меняться от 1 до N
Кол-во вариантов, которое может принимать позиция у каждой позиции тоже может быть разное всегда от 0 до N

з.ы. Скуль 2005
17 окт 13, 16:03    [14986314]     Ответить | Цитировать Сообщить модератору
 Re: Получение всевозможных вариантов  [new]
aleks2
Guest
DECLARE @tmp TABLE(pos int, value int)
INSERT @tmp(pos, value)
VALUES
(1,0),
(1,1),
(2,0),
(2,1),
(3,0),
(3,1),
(3,2)


select t1.value, t2.value, t3.value
  from (select value from @tmp where pos = 1) t1
       cross join
       (select value from @tmp where pos = 2) t2
       cross join
       (select value from @tmp where pos = 3) t3       


Переменное кол-во позиций делается - либо динамикой, либо циклом.
17 окт 13, 16:09    [14986385]     Ответить | Цитировать Сообщить модератору
 Re: Получение всевозможных вариантов  [new]
wql
Member

Откуда:
Сообщений: 7
aleks2, Спасибо ! То что нужно.
Что то я про динамику не подумал и пытался решить задачу в лоб.
17 окт 13, 16:23    [14986520]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить