У меня есть полный юниверс из 41 числа, и я пытаюсь создать возможные комбинации из 6 цифр между этими числами и вставить их в таблицу на SQL Server.SQL Server: генерировать возможные комбинации чисел
Может ли кто-нибудь помочь мне?
спасибо!
У меня есть полный юниверс из 41 числа, и я пытаюсь создать возможные комбинации из 6 цифр между этими числами и вставить их в таблицу на SQL Server.SQL Server: генерировать возможные комбинации чисел
Может ли кто-нибудь помочь мне?
спасибо!
Для получения всех возможных перестановок (41!/(6!*(41-6)!)
чуть менее 4,5 миллионов), вы можете использовать
WITH Balls(N)
AS (SELECT number
FROM master..spt_values
WHERE type='P'
AND number BETWEEN 1 AND 41)
SELECT *
FROM Balls B1
JOIN Balls B2
ON B2.N > B1.N
JOIN Balls B3
ON B3.N > B2.N
JOIN Balls B4
ON B4.N > B3.N
JOIN Balls B5
ON B5.N > B4.N
JOIN Balls B6
ON B6.N > B5.N
Сохраните номера в таблице и используйте cross join
шесть раз, чтобы сопоставить эту таблицу с самим собой. Если цифры не могут повторяться, добавить where
положения или inner join
с on
пункта как on t3.num not in (t1.num,t2.num)
drop table #temp
GO
create table #temp (num int identity(1,1), x int)
GO
insert into #temp default values
GO 41
select
*
from #temp t1
cross join #temp t2
cross join #temp t3
-- and so on
пример может дать лучшее понимание .. это сочетание 6 из 41 и повторение разрешено? – Dreamweaver
порядок значений не имеет значения, но не должен повторяться. Например, возможно комбинаторное: 1 - 2 - 10 - 21 - 30 - 41 –
Как будто вы рассчитывали все возможные номера лотереи с 6 из 41 шара? –