我有这样的数据
Q_NAME VALUE
Q1_2018 100
Q2_2018 200
Q4_2017 300
Q3_2017 150
我想添加如 Q2_2018 + Q1_2018,Q2_2018 + Q4_2017 ,我该如何执行此添加
我想要的预期结果就像
Q_NAME VALUE
Q1_2018+Q2_2018 300
Q2_2018_Q4_2017 500
答案 0 :(得分:1)
使用PIVOT逻辑:
with t as ( select q_name, value from mytable )
select Q2_2018 + Q1_2018, Q2_2018 + Q4_2017 from t
pivot
(
max(value) for q_name in
('Q1_2018' as Q1_2018,'Q2_2018' as Q2_2018, 'Q3_2017' as Q3_2017, 'Q4_2017' as Q4_2017)
);
Q2_2018+Q1_2018 Q2_2018+Q4_2017
--------------- ---------------
300 500
答案 1 :(得分:1)
请注意我正在回答这篇文章标题中的问题:
在oracle中执行像Row1 + Row2,Row2 + Row3这样的添加
您可以将分析函数用于此类事情。 LEAD函数可用于从数据集下方的行中选取数据。在这个例子中,它查看下一行(按季度排序):
WITH
example_data (quarter, amount) AS
(SELECT 'q1',1000 FROM dual UNION ALL
SELECT 'q2',2000 FROM dual UNION ALL
SELECT 'q3',3000 FROM dual UNION ALL
SELECT 'q4',4000 FROM dual
)
SELECT
quarter
,amount
,LEAD(amount) OVER (ORDER BY quarter) next_quarter
,amount + (LEAD(amount) OVER (ORDER BY quarter)) two_quarter_total
FROM
example_data
;
quarter amount next_quarter two_quarter_total
q1 1000 2000 3000
q2 2000 3000 5000
q3 3000 4000 7000
q4 4000
最后一行没有'next'行,因此返回NULL