2016-04-26 2 views
-2

Мне нужен код t-sql для получения набора параметров для набора результатов.poweret (все комбинации) набора результатов в T-SQL

Пример ввода:

ColumnName 
1 
2 
3 

Example Output(one columns as nvarchar) : 
1 
2 
3 
1,2 
1,3 
2,3 
1,2,3 

набор Выход может содержать повторяющиеся значения, такие как (1,3 против 3,1).

ответ

0

Создание таблицы с образцами данных;

CREATE TABLE #TableName (ColumnName varchar(10)) 

INSERT INTO #TableName (ColumnName) 
VALUES (1),(2),(3) 

Мы сделаем это с UNION ALL;

SELECT 
ColumnName 
FROM #TableName a 
UNION ALL 
(
SELECT 
a.ColumnName + ','+ b.ColumnName 
FROM #TableName a 
CROSS JOIN #TableName b 
) 
UNION ALL 
(
SELECT 
a.ColumnName + ',' + b.ColumnName + ','+ c.ColumnName 
FROM #TableName a 
CROSS JOIN #TableName b 
CROSS JOIN #TableName c 
) 

И давайте почистим;

DROP TABLE #TableName 
+1

именно то, что я хочу. Благодаря! – Jean

+1

Это не синергетика вообще (даже если мы допускаем дубликаты): Самая большая причина в том, что это работает только для 3-х элементов. Как только вы добавите 4-й элемент, это не даст вам всех возможных комбинаций. Где 1,2,3,4? Для каждого элемента должен быть «союз все» для того, чтобы это работало. – sparebytes

+0

Он дает ответ с предоставленной информацией. Не стесняйтесь отвечать собственным ответом, если вы не согласны с моим. –