sql - 通过将行转换为列的 Oracle SQL 查询输出
问题描述
我有 oracle 数据库表“应用程序”,其中包含以下几个示例行-
ID NAME SN
123 TV 032361097
123 CB G92970256
236 TV 050791069
345 CB 45681089
456 TV
456 CB
我想通过将行转换为列来获得以下格式的输出 -
ID NAME_TV SR_TV NAME_CB SR_CB
123 TV 032361097 CB G92970256
236 TV 050791069
345 CB 45681089
456 TV CB
解决方案
您可以使用条件聚合:
select id, 'TV' as name_tv, sum(case when name = 'TV' then sn end) as sn_tv,
'CB' as name_cb, sum(case when name = 'CB' then sn end) as sn_cb
from app
group by id;
我确实有一个问题:为什么有name_tv
andname_cb
列?它们似乎是多余的。
推荐阅读
- c - 如何传递指向字符串的指针、指向子字符串的指针并返回其他内容?
- matlab - 如何使用 Matlab 可视化 3d 矩阵的值?
- python - Tensorflow v1.10+ 为什么在没有检查点的情况下需要输入服务接收器功能?
- r - SelectInput 选项包括列标题
- solr - 如何在 Alfresco Solr 搜索中查询不区分大小写?
- c# - 防止应用程序在 dll 中出现未处理的异常时崩溃
- python - 为什么我的代码的一部分与另一个工作部分相同不起作用
- sprite-kit - iOS 中的 SpriteKit 纹理映射
- scala - 匹配 Scala Manifest
- bash - SED 电子邮件替换(sql 转储中的 json 值)