你的位置:首页 > 数据库

[数据库]枚举N行N列的自然数列


数据库环境:SQL SERVER 2005

现有一个需求,要枚举1-50个自然数,分10行5列展示。如图,

解题思路:

1.利用数字辅助表,枚举1-50的自然数列

2.将数字集进行行转列,对5求余作为转列的条件,并按照整除5分组

 

SQL实现

/*枚举1-50的自然数列*/WITH  x0     AS ( SELECT  number        FROM   master..spt_values        WHERE  type = 'P'            AND number >= 1            AND number <= 50       )  /*行转列*/  SELECT ( number - 1 ) / 5 + 1 AS 行号 ,      MAX(CASE WHEN number % 5 = 1 THEN number        END) AS 第一列 ,      MAX(CASE WHEN number % 5 = 2 THEN number        END) AS 第二列 ,      MAX(CASE WHEN number % 5 = 3 THEN number        END) AS 第三列 ,      MAX(CASE WHEN number % 5 = 4 THEN number        END) AS 第四列 ,      MAX(CASE WHEN number % 5 = 0 THEN number        END) AS 第五列  FROM  x0  GROUP BY ( number - 1 ) / 5

View Code

很简单。

(本文完)