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

Откуда:
Сообщений: 48
Как вывести все комбинации чисел in SQL

[,,]
[,,mouse]
[,cat,]
[,cat,mouse]
[dog,,]
[dog,,mouse]
[dog,cat,]
[dog,cat,mouse]

-----------------------------------

c# http://stackoverflow.com/questions/999050/most-elegant-way-to-get-all-subsets-of-an-array-in-c-sharp
14 ноя 11, 19:17    [11595891]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
alwil
[dog,cat,mouse]
Это не числа
С уважением, К.О.
14 ноя 11, 19:18    [11595894]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
alwil
Member

Откуда:
Сообщений: 48
alwil,

[,,]
[,,1]
[,2,]
[,2,1]
[3,,]
[3,,1]
[3,2,]
[3,2,1]
14 ноя 11, 19:25    [11595925]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
alwil,
и какая зависимость у чисел ? и откуда их брать ????
14 ноя 11, 19:42    [11595972]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
И где комбинация [1,2,3] ?
14 ноя 11, 19:44    [11595983]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Паганель
И где комбинация [1,2,3] ?
Тут видимо конбинации рассматриваются, а не перестановки.
14 ноя 11, 19:58    [11596036]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
declare @t table(f3 int, f2 int, f1 int)
insert into @t(f3, f2, f1) values(3, 2, 1)

select *
  from @t
 group by f3, f2, f1
  with cube
 order by grouping(f3) desc, grouping(f2) desc, grouping(f1) desc


f3          f2          f1
----------- ----------- -----------
NULL        NULL        NULL
NULL        NULL        1
NULL        2           NULL
NULL        2           1
3           NULL        NULL
3           NULL        1
3           2           NULL
3           2           1

(8 row(s) affected)
14 ноя 11, 20:16    [11596076]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
WITH [Source] AS (
	SELECT * FROM (VALUES(1,'dog'),(2,'cat'),(3,'mouse')) S(ID,Value)
), Combination (ID,Value) AS (
	SELECT 0,Convert(VarChar(max),'')
UNION ALL
	SELECT	S.ID,C.Value + ',' + S.Value
	FROM	[Source] S JOIN Combination C ON S.ID > C.ID
)
	SELECT Value FROM Combination
Value
,dog
,cat
,mouse
,cat,mouse
,dog,cat
,dog,mouse
,dog,cat,mouse
Тупое универсальное решение для тупой задачи. (Процедурникам этого не понять)
Вся проблема что реляциооные отношения и структуры данных, это как сладкое с громким сравниать.

Если ассоциировать массив, как набор сгруппированных по некоторому признаку корсетов, то как представить пустой массив.

Больше по духу такое:
;WITH [Source] AS (
	SELECT * FROM (VALUES(0,NULL),(1,'dog'),(2,'cat'),(3,'mouse')) S(ID,Value)
)	SELECT	S1.Value,S2.Value,S3.Value
	FROM	(SELECT NULL)DUAL(X)
		LEFT JOIN [Source] S1 ON S1.ID IN (0,1)
		LEFT JOIN [Source] S2 ON S2.ID IN (0,2)
		LEFT JOIN [Source] S3 ON S3.ID IN (0,3)
123
NULLNULLNULL
NULLNULLmouse
NULLcatNULL
NULLcatmouse
dogNULLNULL
dogNULLmouse
dogcatNULL
dogcatmouse
14 ноя 11, 20:31    [11596135]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Паганель
with cube order by grouping
Бе-бе-бе, падумаешь синтакический сахар. ;)
14 ноя 11, 20:35    [11596145]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
qwrqwr
Member

Откуда: Msk
Сообщений: 1684
SELECT [1],[2],[4] FROM
(SELECT 1,'dog' UNION ALL SELECT 2,'cat' UNION ALL SELECT 4,'mouse')T(n,v) RIGHT JOIN
(SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 
  UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7)Q(q)
ON n&q=n PIVOT(MAX(v) FOR n IN([1],[2],[4]))P
14 ноя 11, 23:05    [11596477]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести все комбинации чисел in SQL  [new]
alwil
Member

Откуда:
Сообщений: 48
:-) thx
15 ноя 11, 11:30    [11597856]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить