sql - 会不会有这样的情况,比如只把第一列的数据带到第一行,第二行把第二列的数据带到第二行?
问题描述
我有 5 列(a 列、b 列、c 列、d 列、e 列)
会不会有这样的情况,比如只把第一列的数据带到第一行,第二行把第二列的数据带到第二行?
这种情况我该怎么办?
编辑 v2:
抱歉,我无法正确解释。有时c列可以重复。有一列(列 e)我想对我的结果进行分组,该列的数据如 1-2-3-4 如下:
- abc -- -- -- 1
- -- abc -- -- 1
- -- -- abc -- 1
- -- -- abc -- 1
- -- -- -- abc 1
- abc -- -- -- 2
- -- abc -- -- 2
- -- -- abc -- 2
- -- -- -- abc 2
顺便说一句,我有超过 500 行,当组值更改时,abc 从列 a 开始。
解决方案
with cte as
(
select t.*, row_number()over(order by(select 1))rn from mytable t
)
select (case when rn=1 then column_a end) column_a,
(case when rn=2 then column_b end) column_b,
(case when rn=3 then column_c end) column_c,
(case when rn=4 then column_d end) column_d,
(case when rn=5 then column_e end) column_e
from cte;
如果您想要任何特定顺序的行,那么您可以使用您喜欢的 order by 子句而不是 order by(select 1)
推荐阅读
- java - 将 ArrayList 转换为 2D 数组 - 返回 ArrayOutOfBounds
- firebase - Xamarin Firebase 身份验证 iOS
- django - 为什么在 Django 中使用信号?
- networking - 授予对网络中其他设备的访问权限
- sql-server - 通过链接服务器访问 SQL Server 全局变量 @@dbts,带有数据库上下文
- java - 在 Project Reactor 中将用户代码与库代码交错
- flutter - 在模态底页上方显示 SnackBar
- r - 如何在 R 中使用 for 循环为多个 .csv 文件运行相同的代码?
- angular - Angular:无法使用 HttpClientModule 从 url 获取数据
- flutter - 如何发送带有按钮的文本(没有文本字段)?(扑)