我有下表:
FP_SITE ETL_LOAD_DATE
---------
20 6/30/2016
40 6/30/2016
10 7/8/2016
20 7/8/2016
10 7/8/2016
10 7/14/2016
20 11/10/2016
30 11/10/2016
30 11/17/2016
30 11/17/2016
我希望输出如下:
Row 6/30/2016 7/8/2016 7/14/2016 11/10/2016 11/17/2016
10 2 1
20 1 1 1
30 1 2
40 1
我尝试使用枢轴功能但它不起作用,我使用了以下代码:
select * from (select fp_site, trunc(etl_load_date) from etl_fb_site) pivot (count(trunc(etl_load_date)) for to_char(etl_load_date, 'YYYY') in '2017') order by trunc(etl_load_date);
它以 [1] 响应:ORA-01738:缺少 IN 关键字。我不确定问题出在哪里,但我认为它与 to_char 函数有关,因为我尝试了与文本列(IN 子句中的字符串)相同的代码,它工作正常。注意我使用的是 Oracle 11G。
下面是创建表的代码:
create table etl_fb_site
(FP_SITE number, ETL_LOAD_DATE date);
INSERT ALL
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (20 , TO_DATE('6/30/2016 20:05', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (40 , TO_DATE('6/30/2016 20:05', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (10 , TO_DATE('7/8/2016 10:03', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (20 , TO_DATE('7/8/2016 10:05', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (10 , TO_DATE('7/8/2016 10:10', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (10 , TO_DATE('7/14/2016 20:06', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (20 , TO_DATE('11/10/2016 21:18', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (30 , TO_DATE('11/10/2016 21:20', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (30 , TO_DATE('11/17/2016 20:33', 'mm/dd/yyyy hh24:mi'))
into etl_fb_site(FP_SITE,ETL_LOAD_DATE)values (30 , TO_DATE('11/17/2016 21:33', 'mm/dd/yyyy hh24:mi'))
select * from dual
谢谢,