我有一组包含一列实际数据的行。目标是以Matrix格式显示此数据。列的数量将保持不变,行数可能会有所不同。
例如:
我在考虑为每一行生成一个列值。该列值将在5行后重复。但我不能问题是“为变量赋值的SELECT语句不能与数据检索操作结合”
不确定如何实现。
任何建议都会有所帮助。
进一步添加 - 我已设法生成名称值与列名和值的关联。示例 -
Name1 Col01
Name2 Col02
名称3 Col03
Name4 Col01
名称5 Col02
答案 0 :(得分:3)
您可以使用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
答案 1 :(得分:0)
一般来说:
但是,如果您真的想在SQL中构建显示输出,可以使用与WHILE
和LIMIT
相关联的PIVOT
循环。您只需选择前5个记录,而不是下一个记录,直到完成。
以下是如何使用WHILE
:http://msdn.microsoft.com/de-de/library/ms178642.aspx