枚举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

很简单。

(本文完)

原文地址:https://www.cnblogs.com/boss-he/p/4709164.html