我们说我有表A:援助
PersonID Date CHECK
123456 2012-01-01 F
213415 2012-01-03 A
PersonID ArrivalDate Jan-01 Jan-02 Jan-03
123456 2012-01-01 F NULL NULL
213415 2012-01-03 NULL NULL A
系统用于支票,1到15天但不超过1天。任何想法都会非常感激。
答案 0 :(得分:0)
你可以尝试这个,但我不确定这是否是你需要的,
with inputs_
as (select 123456 person_id, to_date('2012-01-01', 'YYYY-MM-DD') date_, 'F' check_
from dual
union all
select 213415 person_id, to_date('2012-01-03', 'YYYY-MM-DD'), 'A' check_
from dual
UNION ALL
select 123456 person_id, to_date('2012-01-01', 'YYYY-MM-DD') date_, 'F' check_
from dual
union all
select 213415 person_id, to_date('2012-01-03', 'YYYY-MM-DD'), 'A' check_
from dual
union all
select 123456 person_id, to_date('2012-01-04', 'YYYY-MM-DD') date_, 'F' check_
from dual
union all
select 213415 person_id, to_date('2012-01-05', 'YYYY-MM-DD'), 'A' check_
from dual
union all
select 123456 person_id, to_date('2012-01-02', 'YYYY-MM-DD') date_, 'A' check_
from dual
union all
select 213415 person_id, to_date('2012-01-04', 'YYYY-MM-DD'), 'A' check_
from dual
UNION ALL
select 213415 person_id, to_date('2012-01-02', 'YYYY-MM-DD'), 'F' check_
from dual)
select *
from (select person_id, date_ arrival_date, check_, TO_CHAR(date_, 'DD-MON') date_
from inputs_)
pivot (min(check_) for date_ in ('01-JAN', '02-JAN', '03-JAN', '04-JAN', '05-JAN')
)
order by 2;
输出:
此外,这不是动态的,因此如果您想要动态支点,可以看到此链接,Dynamic pivot in oracle sql
答案 1 :(得分:0)
您可以使用查询为{min}日期到最大日期的PIVOT
IN
子句构建动态日期值。然后在IN
的{{1}}子句中打开包含所需参数的动态游标。
PIVOT
(12c及更高版本)将显示所需的结果。
对于旧版本,您可以在此处参考我的答案,以便轻松显示光标的输出:Display result
DBMS_SQL.RETURN_RESULT