在列中转置固定数量的行
Transpose fixed number of rows in columns
我有一个下面提到的数据集(一列,多行)。我想转置列中的前 5 行 - 第 1 行,第 2 行列中的下 5 行,依此类推。谁能帮我 SQL 查询来实现这个
我们可以使用 ROW_NUMBER
和模数设置一个数据透视查询,以将值放在您想要的位置:
WITH cte AS (
SELECT col, ROW_NUMBER() OVER (ORDER BY col) rn
FROM yourTable
)
SELECT
MAX(CASE WHEN (rn - 1) % 5 = 0 THEN col END) AS col1,
MAX(CASE WHEN (rn - 1) % 5 = 1 THEN col END) AS col2,
MAX(CASE WHEN (rn - 1) % 5 = 2 THEN col END) AS col3,
MAX(CASE WHEN (rn - 1) % 5 = 3 THEN col END) AS col4,
MAX(CASE WHEN (rn - 1) % 5 = 4 THEN col END) AS col5
FROM cte
GROUP BY (rn - 1) / 5;
这里的逻辑是每组(输出中的行)行号序列每 5 步递增 1。组中每个值所在的特定列取决于模数。
我有一个下面提到的数据集(一列,多行)。我想转置列中的前 5 行 - 第 1 行,第 2 行列中的下 5 行,依此类推。谁能帮我 SQL 查询来实现这个
我们可以使用 ROW_NUMBER
和模数设置一个数据透视查询,以将值放在您想要的位置:
WITH cte AS (
SELECT col, ROW_NUMBER() OVER (ORDER BY col) rn
FROM yourTable
)
SELECT
MAX(CASE WHEN (rn - 1) % 5 = 0 THEN col END) AS col1,
MAX(CASE WHEN (rn - 1) % 5 = 1 THEN col END) AS col2,
MAX(CASE WHEN (rn - 1) % 5 = 2 THEN col END) AS col3,
MAX(CASE WHEN (rn - 1) % 5 = 3 THEN col END) AS col4,
MAX(CASE WHEN (rn - 1) % 5 = 4 THEN col END) AS col5
FROM cte
GROUP BY (rn - 1) / 5;
这里的逻辑是每组(输出中的行)行号序列每 5 步递增 1。组中每个值所在的特定列取决于模数。