sql - 将 1 列拆分为 5 列
问题描述
我有一个相对简单的问题(我认为),但我无法理解它。我有一列有 200 条记录。行的值是 1-200 的数字列表(无重复)。我想将数据组织成 5 列,数据水平排序(Ascending AZ)。例子:
Original table:
Column1
1
2
3
4
5
6
7
8
...and so on to 200
视图结果应如下所示:
|Col1|Col2|Col3|Col4|Col5|
1 2 3 4 5
6 7 8 9 10
11 12 ...an so on to 200
我研究了 PIVOTING,但我认为它不会起作用。
解决方案
我们可以尝试一个透视查询,其中组定义为列减一除以 5。这会将前五个记录放入第一组/行,接下来的五个记录放入第二组/行,依此类推。然后,我们以每个Column1 % 5
值为中心,以确定每个值将进入五列中的哪一列。
SELECT
MAX(CASE WHEN Column1 % 5 = 1 THEN Column1 END) AS Col1,
MAX(CASE WHEN Column1 % 5 = 2 THEN Column1 END) AS Col2,
MAX(CASE WHEN Column1 % 5 = 3 THEN Column1 END) AS Col3,
MAX(CASE WHEN Column1 % 5 = 4 THEN Column1 END) AS Col4,
MAX(CASE WHEN Column1 % 5 = 0 THEN Column1 END) AS Col5
FROM yourTable
GROUP BY
(Column1 - 1) / 5;
演示
推荐阅读
- database - 存储序列
- asp.net-core - IdentityServer 跨浏览器选项卡的不同租户/用户
- html - 调整图像大小的最佳方法,% 与最大宽度
- python - 熊猫:按年爆发,然后填补空白
- sed - 在 tcl 文件中使用 sed
- java - 在 JPA 查询中使用 CAST 或 CONVERT 将精度为 2 的 BigDecimal 与精度为 3 的数据进行比较
- python - 通过按钮打开另一个窗口并使用 Tkinter,Python 返回一个空窗口
- mysql - Mysql 表修复失败:“无法创建新的临时文件”
- c++ - 依赖注入和所有权问题
- sql - 超链接 - 给出运行时错误 5“无效的过程调用或参数”