1

我有下表:

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

谢谢,

4

0 回答 0