这很简单,我保证我过度思考。我有一个输入数据集,其月度数据如下所示:
MTD | ID | State
-----------------------
Jan-16 | 1 | A
Feb-16 | 1 | B
Mar-16 | 1 | A
Jan-16 | 2 | C
Feb-16 | 2 | B
Mar-16 | 2 | A
MTD是一个日期字段,每个月由该月的第一个月表示(例如:2016年4月= 01年4月1日)。
我需要编写一个返回的查询:
ID | Jan State | Feb State | Mar State | (Repeat for each month)
------------------------------------------------------------------------
1 | A | B | A | ...
2 | C | B | A | ...
由于每月都会添加新数据,因此我希望自动执行查询,以便在新一个月的数据发布时不必编辑它。
我正在尝试做什么?
答案 0 :(得分:2)
请参阅对原始问题的评论 - OP表示他会对MTD列中一组已知值的解决方案感到满意。
演示(假设事先知道MTD列中的值):
with
inputs ( mtd, id, state ) as (
select 'Jan-16', 1, 'A' from dual union all
select 'Feb-16', 1, 'B' from dual union all
select 'Mar-16', 1, 'A' from dual union all
select 'Jan-16', 2, 'C' from dual union all
select 'Feb-16', 2, 'B' from dual union all
select 'Mar-16', 2, 'A' from dual
)
select *
from inputs
pivot (max(state) for mtd in ('Jan-16' as jan_state, 'Feb-16' as feb_state,
'Mar-16' as mar_state))
;
<强>输出强>:
ID JAN_STATE FEB_STATE MAR_STATE
--- -------- --------- ---------
1 A B A
2 C B A