我有一组行,其中有一列实际数据。目标是以矩阵格式显示此数据。列数将保持不变,行数可能会有所不同。
例如:
- 我有 20 条记录。如果我有 5 列 - 那么行数将为 4
- 我有 24 条记录。我有 5 列,行数为 5,第 5 行的第 5 列为空。
- 我有 18 条记录。我有 5 列,行数为 4,第 4 行中的第 4 列和第 5 列为空。
我正在考虑针对每一行生成一个列值。该列值将在 5 行后重复。但我不能问题是“为变量赋值的 SELECT 语句不得与数据检索操作结合使用”
不确定如何实现。
任何建议都会有帮助。
进一步补充 - 我已成功生成与列名称和值的名称值关联。示例 -
名称1 Col01
名称2 Col02
名称3 Col03
名称4 Col01
名称5 Col02
最佳答案
您可以使用ROW_NUMBER
分配从0开始的连续整数。然后按整数除法的结果进行分组,同时以余数为基础。
WITH T AS
(
SELECT number,
ROW_NUMBER() OVER (ORDER BY number) -1 AS RN
FROM master..spt_values
)
SELECT MAX(CASE WHEN RN%5 = 0 THEN number END) AS Col1,
MAX(CASE WHEN RN%5 = 1 THEN number END) AS Col2,
MAX(CASE WHEN RN%5 = 2 THEN number END) AS Col3,
MAX(CASE WHEN RN%5 = 3 THEN number END) AS Col4,
MAX(CASE WHEN RN%5 = 4 THEN number END) AS Col5
FROM T
GROUP BY RN/5
ORDER BY RN/5
关于SQL查询返回矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25420580/