powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Снова CTE и комбинаторика
25 сообщений из 25, страница 1 из 1
Снова CTE и комбинаторика
    #39867780
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть таблица с единственным столбцом
Код: plaintext
1.
2.
3.
4.
value
-----
a
b
c

Нужно получить набор данных со всеми возможными комбинациями и номером набора, то есть:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
index    value
-----    -----
1        a
1        b
1        c
2        a
2        c
2        b
3        b
3        a
3        c
4        b
4        c
4        a
5        c
5        a
5        b
6        c
6        b
6        a

Спасибо!
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867802
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И какой в этом смысл, если все они абсолютно идентичны?
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867809
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Лапыч,

фулл джоин саму на себя?
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867816
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaИ какой в этом смысл, если все они абсолютно идентичны?
тут нужны наводящие вопросы )

Leo Лапыч, а чем у вас набор записей с index = 1 отличается от набора с index = 2? кроме самого index
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867818
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Лапыч,

cross join на количество вариантов в степен длинны, в вашем случае это 3^3 и убрать дубли
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867821
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShakillAkinaИ какой в этом смысл, если все они абсолютно идентичны?
тут нужны наводящие вопросы )

Leo Лапыч, а чем у вас набор записей с index = 1 отличается от набора с index = 2? кроме самого index
Ikshall понимает, о чём говорит
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867825
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Лапыч,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE #t (value char(1));

INSERT INTO #t
(
    value
)
VALUES
('a'), ('b'), ('c');

SELECT ROW_NUMBER() OVER (ORDER BY t1.value, t2.value, t3.value) AS [index], * 
FROM #t t1
    INNER JOIN #t t2 ON t1.value != t2.value
    INNER JOIN #t t3 ON t1.value != t3.value AND t2.value != t3.value

DROP TABLE #t
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867843
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы!

AkinaИ какой в этом смысл, если все они абсолютно идентичны?Shakillтут нужны наводящие вопросы )
Leo Лапыч, а чем у вас набор записей с index = 1 отличается от набора с index = 2? кроме самого indexTaPaKIkshall понимает, о чём говорит
Суть именно в порядке их следования в результирующей выборке. Можно добавить ещё один столбец для наглядности:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
set_index    value_index    value
---------    -----------    -----
1            1              a
1            2              b
1            3              c
2            1              a
2            2              c
2            3              b
3            1              b
3            2              a
3            3              c
4            1              b
4            2              c
4            3              a
5            1              c
5            2              a
5            3              b
6            1              c
6            2              b
6            3              a

Ну и для решения задачи считать, что результирующий набор данных выведен в
Код: sql
1.
order by set_index, value_index

.

StarikNavyLeo Лапыч,
фулл джоин саму на себя?
Ну если Вы получите таким образом результирующий набор данных, то прошу пример... Я лично не смог вообразить себе соединение, которое бы его дало.

TaPaKcross join на количество вариантов в степен длинны, в вашем случае это 3^3 и убрать дублиMinamoto
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE #t (value char(1));

INSERT INTO #t
(
    value
)
VALUES
('a'), ('b'), ('c');

SELECT ROW_NUMBER() OVER (ORDER BY t1.value, t2.value, t3.value) AS [index], * 
FROM #t t1
    INNER JOIN #t t2 ON t1.value != t2.value
    INNER JOIN #t t3 ON t1.value != t3.value AND t2.value != t3.value

DROP TABLE #t


Задачу нужно решить в общем виде, так как количество строк исходного набора данных может варьироваться от 1 до... скажем, 7. Распределение показательное, т.е. 1 выстреливает очень часто, а 7 - крайне редко.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867865
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo ЛапычЗадачу нужно решить в общем виде, так как количество строк исходного набора данных может варьироваться от 1 до... скажем, 7. Распределение показательное, т.е. 1 выстреливает очень часто, а 7 - крайне редко.
Пока умного общего вида не придумал, могу пока предложить тупой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE #t (value char(1));

INSERT INTO #t
(
    value
)
VALUES
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g');

SELECT ROW_NUMBER() OVER (ORDER BY t1.value, t2.value, t3.value, t4.value, t5.value, t6.value, t7.value) AS [index], * 
FROM #t t1
LEFT JOIN #t t2 ON t1.value != t2.value
LEFT JOIN #t t3 ON t1.value != t3.value AND t2.value != t3.value
LEFT JOIN #t t4 ON t1.value != t4.value AND t2.value != t4.value AND t3.value != t4.value
LEFT JOIN #t t5 ON t1.value != t5.value AND t2.value != t5.value AND t3.value != t5.value AND t4.value != t5.value
LEFT JOIN #t t6 ON t1.value != t6.value AND t2.value != t6.value AND t3.value != t6.value AND t4.value != t6.value AND t5.value != t6.value
LEFT JOIN #t t7 ON t1.value != t7.value AND t2.value != t7.value AND t3.value != t7.value AND t4.value != t7.value AND t5.value != t7.value AND t6.value != t7.value

DROP TABLE #t
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867890
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MinamotoПока умного общего вида не придумал, могу пока предложить тупой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE #t (value char(1));

INSERT INTO #t
(
    value
)
VALUES
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g');

SELECT ROW_NUMBER() OVER (ORDER BY t1.value, t2.value, t3.value, t4.value, t5.value, t6.value, t7.value) AS [index], * 
FROM #t t1
LEFT JOIN #t t2 ON t1.value != t2.value
LEFT JOIN #t t3 ON t1.value != t3.value AND t2.value != t3.value
LEFT JOIN #t t4 ON t1.value != t4.value AND t2.value != t4.value AND t3.value != t4.value
LEFT JOIN #t t5 ON t1.value != t5.value AND t2.value != t5.value AND t3.value != t5.value AND t4.value != t5.value
LEFT JOIN #t t6 ON t1.value != t6.value AND t2.value != t6.value AND t3.value != t6.value AND t4.value != t6.value AND t5.value != t6.value
LEFT JOIN #t t7 ON t1.value != t7.value AND t2.value != t7.value AND t3.value != t7.value AND t4.value != t7.value AND t5.value != t7.value AND t6.value != t7.value

DROP TABLE #t


Спасибо за вариант в лоб. Если ещё дополните свой пример тем, как это привести к требуемой структуре выходных данных (индекс набора, индекс значения внутри набора, значение), то я с удовольствием возьму на вооружение, как временный вариант.

Но хотелось бы всё же увидеть мощь CTE в действии. Что-то мне подсказывает, что с помощью них можно построить подобную результирующую выборку, ведь по сути - это рекурсия, только не по дереву, а по графу.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867893
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867908
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap Кол-во возможных комбинаций из n-элементов множества
Пример использования CTE увидел, даже выполнил его и попробовал понять что он возвращает. Увидел некое подобие перебора вариантов, попробовал поменять значения констант,
Код: sql
1.
WITH Numbers(N) AS (SELECT 1 UNION ALL SELECT N+1 FROM Numbers WHERE N<7)

Код: sql
1.
SET @N=7;


но результаты вызвали лишь больше вопросов.

Ну и главное - не смог представить как туда подставить мой исходный набор данных и получить желаемый результат.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867917
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo ЛапычСпасибо за вариант в лоб. Если ещё дополните свой пример тем, как это привести к требуемой структуре выходных данных (индекс набора, индекс значения внутри набора, значение), то я с удовольствием возьму на вооружение, как временный вариант.
Это уже скучная часть, но надо уж завершить )

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
CREATE TABLE #t (value char(1));

INSERT INTO #t
(
    value
)
VALUES
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g');

SELECT 
    ROW_NUMBER() OVER (ORDER BY t1.value, t2.value, t3.value, t4.value, t5.value, t6.value, t7.value) AS set_index, 
    t1.value AS [1],  
    t2.value AS [2],  
    t3.value AS [3],  
    t4.value AS [4],  
    t5.value AS [5],  
    t6.value AS [6],  
    t7.value AS [7]
INTO #t1
FROM 
    #t t1
    LEFT JOIN #t t2 ON t1.value != t2.value
    LEFT JOIN #t t3 ON t1.value != t3.value AND t2.value != t3.value
    LEFT JOIN #t t4 ON t1.value != t4.value AND t2.value != t4.value AND t3.value != t4.value
    LEFT JOIN #t t5 ON t1.value != t5.value AND t2.value != t5.value AND t3.value != t5.value AND t4.value != t5.value
    LEFT JOIN #t t6 ON t1.value != t6.value AND t2.value != t6.value AND t3.value != t6.value AND t4.value != t6.value AND t5.value != t6.value
    LEFT JOIN #t t7 ON t1.value != t7.value AND t2.value != t7.value AND t3.value != t7.value AND t4.value != t7.value AND t5.value != t7.value AND t6.value != t7.value

SELECT 
    unpvt.set_index, unpvt.value_index, unpvt.value
FROM 
    #t1
UNPIVOT
    (value FOR value_index IN ([1],[2], [3], [4], [5], [6], [7])) AS unpvt
ORDER BY 
    unpvt.set_index, unpvt.value_index

DROP TABLE #t
DROP TABLE #t1
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867932
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minamoto ,

Спасибо! Решение есть.

Остаётся ещё надежда на помощь iap с CTE, так как чувствуя я, что его пример по ссылке перебором всё же занимается. Уверен, что на CTE решение должно выглядеть более изящно.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867937
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
create table #t (
	ch char(1)
)


insert #t(
	ch
)
select 
	x.ch
from (
	values 
		('a')
		, ('b')
		, ('c')
		, ('d')
) x(ch)





; with cte as
(
	select 
		ch_sum = cast(ch as varchar(8000))
	from #t 
	union all
	select 
		ch_sum = cte.ch_sum + t.ch
	from cte 
	inner join #t t on charindex(t.ch, cte.ch_sum) = 0      
) 
select
	s.set_index
	, value_index  = charindex(t.ch, s.ch_sum)
	, value = t.ch
from (
	select 
		set_index = row_number() over(order by (ch_sum))
		, ch_sum
	from cte
	where 
		len(cte.ch_sum) = (select count(*) from #t)
) s 
inner join #t t on charindex(t.ch, s.ch_sum) > 0 
order by 
	set_index
	, value_index


drop table #t
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867940
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo Лапыч , да вроде в CTE должно быть не сильно сложно.

Сперва рекурсией добавляем по одному символу в конец, проверяя, что этого символа ещё нет (можно ещё и разделителем озаботиться, чтобы потом проще обратно разделять было). Соответственно рекурсия остановится, когда все символы попадут в поле. Затем отсекаем недоделанные (короткие) строки, оставляя только те, в которых есть все исходные символы, а заодно прилепляем номера будущих наборов. И потом функцией разматываем их вертикально - благо они разматываются в физическом порядке следования в разбираемой строке.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867964
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
create table #t (
	ch char(1)
)


insert #t(
	ch
)
select 
	x.ch
from (
	values 
		('a')
		, ('b')
		, ('c')
		, ('d')
) x(ch)





; with cte as
(
	select 
		ch_sum = cast(ch as varchar(8000))
	from #t 
	union all
	select 
		ch_sum = cte.ch_sum + t.ch
	from cte 
	inner join #t t on charindex(t.ch, cte.ch_sum) = 0      
) 
select
	s.set_index
	, value_index  = charindex(t.ch, s.ch_sum)
	, value = t.ch
from (
	select 
		set_index = row_number() over(order by (ch_sum))
		, ch_sum
	from cte
	where 
		len(cte.ch_sum) = (select count(*) from #t)
) s 
inner join #t t on charindex(t.ch, s.ch_sum) > 0 
order by 
	set_index
	, value_index


drop table #t


Akina
Leo Лапыч , да вроде в CTE должно быть не сильно сложно.

Сперва рекурсией добавляем по одному символу в конец, проверяя, что этого символа ещё нет (можно ещё и разделителем озаботиться, чтобы потом проще обратно разделять было). Соответственно рекурсия остановится, когда все символы попадут в поле. Затем отсекаем недоделанные (короткие) строки, оставляя только те, в которых есть все исходные символы, а заодно прилепляем номера будущих наборов. И потом функцией разматываем их вертикально - благо они разматываются в физическом порядке следования в разбираемой строке.

Спасибо за рабочий пример! Всё-таки через создание последовательностей и функционал поиска элемента в них. Я думал, что CTE сможет прямо на лету вставлять строки в результирующую выборку, как это происходит при обходе дерева. Ну, по крайней мере, решение с использованием CTE не ограничено количеством строк исходного набора данных.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39867973
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo ЛапычЯ думал, что CTE сможет прямо на лету вставлять строки в результирующую выборку, как это происходит при обходе дерева.

Так и происходит, и вы получаете ваше решение в виде дерева (я немного поменял скрипт, оставив только само дерево)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
create table #t (
	ch char(1)
)


insert #t(
	ch
)
select 
	x.ch
from (
	values 
		('a')
		, ('b')
		, ('c')
		, ('d')
) x(ch)





; with cte as
(
	select 
		ch 
		, l = 0  
		, ch_sum = cast(ch as varchar(8000))
	from #t 
	union all
	select 
		t.ch
		, l = cte.l +  1
		, ch_sum = cte.ch_sum + t.ch
	from cte 
	inner join #t t on charindex(t.ch, cte.ch_sum) = 0      
) 
select
	ch = replicate('>', l) + ch
from cte 
order by 
	ch_sum
drop table #t






но вам то нужно не дерево а пути до листовых элементов (группа - это и есть полный путь)
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39868018
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leo ЛапычНу, по крайней мере, решение с использованием CTE не ограничено количеством строк исходного набора данных.Но это редкостный тормоз, доложу я вам!
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39868027
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapLeo ЛапычНу, по крайней мере, решение с использованием CTE не ограничено количеством строк исходного набора данных.Но это редкостный тормоз, доложу я вам!Учитывая, что результативное количество строк - это факториал от исходного - в целом неудивительно.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39868046
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex
Так и происходит, и вы получаете ваше решение в виде дерева (я немного поменял скрипт, оставив только само дерево)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
create table #t (
	ch char(1)
)


insert #t(
	ch
)
select 
	x.ch
from (
	values 
		('a')
		, ('b')
		, ('c')
		, ('d')
) x(ch)





; with cte as
(
	select 
		ch 
		, l = 0  
		, ch_sum = cast(ch as varchar(8000))
	from #t 
	union all
	select 
		t.ch
		, l = cte.l +  1
		, ch_sum = cte.ch_sum + t.ch
	from cte 
	inner join #t t on charindex(t.ch, cte.ch_sum) = 0      
) 
select
	ch = replicate('>', l) + ch
from cte 
order by 
	ch_sum
drop table #t






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

MinamotoУчитывая, что результативное количество строк - это факториал от исходного - в целом неудивительно.iapНо это редкостный тормоз, доложу я вам!У меня при 7! выполняется одинаково быстро - меньше секунды, что меня вполне устраивает, так как 7 - это крайне редкий случай.
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39868126
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если надоест лазить по кактусам то можно воспользоваться встроенными SQL Server средствами предназначенными для таких задач (хотя не у всех они настроены)например так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare @qry nvarchar(max)=
N'select a from(values(''a''),(''b''),(''c''),(''d''),(''e''))x(a)'
--N'select top 3[CurrencyAlternateKey]from[dbo].[DimCurrency]'
--select a from(values('a'),('b'),('c'),('d'),('c'))x(a)
--select top 3[CurrencyAlternateKey]from[dbo].[DimCurrency]
exec sp_execute_external_script @language=N'R',
@script=N'sql_ru<-function(v){n<-length(v)
if(n==1){v}else{X<-NULL
for(i in 1:n) X<-rbind(X,cbind(v[i],sql_ru(v[-i])));X}}
ou<-sql_ru(t(InputDataSet));u<-length(InputDataSet[,1])
m<-matrix(nrow=dim(ou)[1]*dim(ou)[2],ncol=3)
for(i in 1:dim(ou)[1]){for(j in 1:dim(ou)[2]){
m[u*i+j-u,3]<-ou[i,j];m[u*i+j-u,1]<-i
m[u*i+j-u,2]<-j}};OutputDataSet<-data.frame(m)',
@input_data_1=@qry
with result sets(("set"int,"seq"int,"val"varchar(6)))
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39868450
Leo Лапыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkivесли надоест лазить по кактусам то можно воспользоваться встроенными SQL Server средствами предназначенными для таких задач (хотя не у всех они настроены)например так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare @qry nvarchar(max)=
N'select a from(values(''a''),(''b''),(''c''),(''d''),(''e''))x(a)'
--N'select top 3[CurrencyAlternateKey]from[dbo].[DimCurrency]'
--select a from(values('a'),('b'),('c'),('d'),('c'))x(a)
--select top 3[CurrencyAlternateKey]from[dbo].[DimCurrency]
exec sp_execute_external_script @language=N'R',
@script=N'sql_ru<-function(v){n<-length(v)
if(n==1){v}else{X<-NULL
for(i in 1:n) X<-rbind(X,cbind(v[i],sql_ru(v[-i])));X}}
ou<-sql_ru(t(InputDataSet));u<-length(InputDataSet[,1])
m<-matrix(nrow=dim(ou)[1]*dim(ou)[2],ncol=3)
for(i in 1:dim(ou)[1]){for(j in 1:dim(ou)[2]){
m[u*i+j-u,3]<-ou[i,j];m[u*i+j-u,1]<-i
m[u*i+j-u,2]<-j}};OutputDataSet<-data.frame(m)',
@input_data_1=@qry
with result sets(("set"int,"seq"int,"val"varchar(6)))

Спасибо, конечно. Но лучше уколоться об кактус, чем голой попой сесть на ежа. Так-то можно было на .NET сделать сборку и зарегистрировать её как хранимую процедуру. А интерес был именно в том, как эта задача решается на Transact-SQL с использованием обобщённых табличных выражений (или без них).
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39868895
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv,

Хосспади, и это такие реализации решений в этом богоподобном R, так это выглядит?
Какой ужас, честно... даже регулярные выражения в PowerShell выглядят теперь совершенно по-детски безобидно рядом с этим
...
Рейтинг: 0 / 0
Снова CTE и комбинаторика
    #39868896
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vikkiv,

Хосспади, и это такие реализации решений в этом богоподобном R, так это выглядит?
Какой ужас, честно... даже регулярные выражения в PowerShell выглядят теперь совершенно по-детски безобидно рядом с этим
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Снова CTE и комбинаторика
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]