sql - 在 Oracle 11g 上将行转换为列
问题描述
我有一个包含两列(名称和性别)的表。我的表中有 4 条记录。
Name Gender
A Male
B Female
C Male
D Female
我想编写一个 SQL 查询来将上述数据转换为以下格式。
Male Female
A B
C D
解决方案
另一种类似于 Tim 的可能性,但只需要一个 CTE:
with numbered as (
select name, gender, row_number() over (partition by gender order by name) as rn
from the_table
)
select f.name as "Female", m.name as "Male"
from numbered f
full outer join numbered m on m.rn = f.rn and m.gender = 'Male'
where f.gender = 'Female';
如果每个性别的行数不同,通过使用完整的外部连接,这也可以工作。
推荐阅读
- tableau-api - 两个标志值 0 之间标志值 1 的计数
- c# - 在 ASP .NET Core 的视图数据中返回 Null
- xml - 如何获取xml子节点中值的具体字数?
- github - 无法通过 Web UI 访问 github 版本的 repo
- windows - Flutter 运行时出错:java.lang.IllegalAccessError
- c++ - 为什么在将引用传递给类时这段代码会出现段错误?
- blueprint - 无法下载 mindmeld 蓝图“screening_app”
- reactjs - 在组合模型中将道具传递给孩子
- html - CSS:如何以一列覆盖另一列的方式组织两列?
- angular - 如何在茉莉花中对引导模式关闭功能进行单元测试 - Angular8