如何将一列的结果集划分为多列
假设我在“四分之一”和“任期”一列中的值与表“样本”相同,如下所示
Quarter|Tenure
Q1 |3
Q2 |3
Q3 |2
Q4 |1
任期是雇员每季度服务的月数。
现在,我希望结果集是应在四个不同的列中每季度获取的四个不同的任期。意思是应该在4个不同的列中显示哪个季度的任期是多少。
例如
Q1_A| Q2_A |Q3_A |Q4_A
3 | 3 |2 |1
答案 0 :(得分:0)
您可以使用DECODE:
SELECT SUM(DECODE(quarter,'Q1',tenure,0)) Q1_A,
SUM(DECODE(quarter,'Q2',tenure,0)) Q2_A,
SUM(DECODE(quarter,'Q3',tenure,0)) Q3_A,
SUM(DECODE(quarter,'Q4',tenure,0)) Q4_A
FROM Sample;
答案 1 :(得分:0)
使用PIVOT
:
Oracle设置:
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 <>提琴here