首页 > 解决方案 > 将列的结果集转换为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

标签: sqloracle

解决方案


使用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<>在这里摆弄


推荐阅读