数据库环境: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
很简单。
(本文完)