sql - 将列的结果集转换为oracle中的许多列名
问题描述
如何将列的结果集划分为多列
假设我有一列 Quarter 和 Tenure,其值如下表 Sample
Quarter|Tenure
Q1 |3
Q2 |3
Q3 |2
Q4 |1
因此,任期是员工每季度服务的月数。
现在我希望结果集是每个季度获取的四个不同的任期应该在四个不同的列中。这意味着它应该显示哪个季度的任期是多少,但在 4 个不同的列中。
例如
Q1_A| Q2_A |Q3_A |Q4_A
3 | 3 |2 |1
解决方案
使用PIVOT
:
甲骨文设置:
CREATE TABLE table_name ( Quarter, Tenure ) AS
SELECT 'Q1', 3 FROM DUAL UNION ALL
SELECT 'Q2', 3 FROM DUAL UNION ALL
SELECT 'Q3', 2 FROM DUAL UNION ALL
SELECT 'Q4', 1 FROM DUAL;
查询:
SELECT *
FROM table_name
PIVOT ( MAX( Tenure ) FOR Quarter IN (
'Q1' AS Q1_A,
'Q2' AS Q2_A,
'Q3' AS Q3_A,
'Q4' AS Q4_A
) )
输出:
Q1_A | Q2_A | Q3_A | Q4_A ---: | ---: | ---: | ---: 3 | 3 | 2 | 1
db<>在这里摆弄
推荐阅读
- python - 用户如何将自己的值添加到 dash_core_components.Dropdown?
- c# - Stream Microphone in Unity over RTP
- postgresql - idle_in_transaction_session_timeout 让我的应用程序崩溃
- python - 如何从 AWS S3 存储桶下载加密的 .gz 文件
- apache-spark - mapGroupsWithState 抛出错误原因:java.lang.NoClassDefFoundError:无法初始化
- c# - 框架手势识别器在 ios 模拟器 Xamarin 中不起作用
- python - 遍历列表并与下拉列表中的选项进行比较
- php - 如何配置本地 PHP 以显示目录内容
- symfony - Symfony4 - 在两个实体管理器之间共享缓存池,这是一个坏主意还是我遇到了错误?
- excel - 检索具有相同级别名称的多个 XML 节点