【问题标题】:Oracle Pivoting returning Null values for Month/YearOracle Pivoting 返回 Null 值的月/年
【发布时间】:2015-01-16 14:27:44
【问题描述】:

我正在尝试根据日期(字段 DT)按月/年旋转此表:

  CREATE TABLE "TEMP" 
   (    "NAME" VARCHAR2(20 BYTE), 
        "DT" DATE, 
        "SZ" NUMBER(10,0)
   )

Insert into TEMP (NAME,DT,SZ) values ('A',to_date('16/01/15','DD/MM/RR'),'1');
Insert into TEMP (NAME,DT,SZ) values ('B',to_date('16/01/15','DD/MM/RR'),'2');
Insert into TEMP (NAME,DT,SZ) values ('C',to_date('16/01/15','DD/MM/RR'),'3');
Insert into TEMP (NAME,DT,SZ) values ('D',to_date('16/01/15','DD/MM/RR'),'4');
Insert into TEMP (NAME,DT,SZ) values ('A',to_date('10/01/15','DD/MM/RR'),'5');
Insert into TEMP (NAME,DT,SZ) values ('B',to_date('10/01/15','DD/MM/RR'),'6');
Insert into TEMP (NAME,DT,SZ) values ('C',to_date('10/01/15','DD/MM/RR'),'7');

使用这个查询:

SELECT * from
  (select name, sz, dt from temp) 
  pivot (sum(sz) for dt in (to_date('01/2015', 'MM/YYYY') as "dt"))

我收到了这个:

NAME                         dt
-------------------- ----------
D                               
A                               
B                                
C     

但是,我却得到了:

NAME                         dt
-------------------- ----------
D                             4 
A                             6  
B                             8   
C                            10 

我尝试了很多东西,但似乎都没有:

...
pivot (sum(sz) for dt in ('01/2015' as "dt")) --01843. 00000 -  "not a valid month"

你知道我做错了什么吗?

非常欢迎任何帮助。

【问题讨论】:

  • 你为什么要旋转?我看没必要,select name, sum(sz) as dt from temp group by name不是给你你想要的吗?
  • 确实是一样的效果。但这是我真实数据的一个非常简单的例子。实际上,我的真实表可以有几个月/几年的几个数据和几十列。所以这在很长一段时间内(超过一个月)都行不通。我真的很感谢你的帮助:)

标签: oracle null pivot-table


【解决方案1】:

您需要使用TO_CHAR 而不是TO_DATE

WITH pivotdata AS 
( 
       SELECT name, 
              sz, 
              To_char(dt, 'MM/YYYY') dt1 
       FROM   temp ) 
SELECT * 
FROM   pivotdata pivot (SUM(sz) FOR dt1 IN ('01/2015') );

这将返回

NAME    '01/2015'
D   4
A   6
B   8
C   10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多