回复:11-03题目:用T-SQL获取26选7的所有组合
CREATE FUNCTION SelectNFromM (@N INT, @M INT)
RETURNS @Temp TABLE (Value NVARCHAR(50),
MaxIndex INT)
AS
BEGIN
DECLARE @IndexTemp TABLE ([Index] INT)
DECLARE @INDEX INT
SET @INDEX = 0
WHILE (@INDEX < @M)
BEGIN
INSERT @IndexTemp VALUES (@INDEX)
SET @INDEX = @INDEX + 1
END
IF (@N = 1)
BEGIN
INSERT @Temp SELECT [Index], [Index] FROM @IndexTemp
END
ELSE
BEGIN
SET @INDEX = @N - 1;
INSERT @Temp SELECT a.Value + ' ' + CONVERT(NVARCHAR(50), b.[Index]), b.[Index] FROM SelectNFromM(@INDEX, @M) AS a, @IndexTemp b WHERE b.[Index] > a.MaxIndex
END
RETURN
END
GO
SELECT Value FROM SelectNFromM (7, 26)