首页 > 解决方案 > sql UNPIVOT查询日期格式

问题描述

我对 UnPivot 进行了如下查询。这会给我代码,value1,value2。现在我想将日期字段的格式更改为“MM/DD/YYYY”。尝试 to_char(MATH_DATE, 'MM/DD/YYYY') 但得到

ORA-00904: "from$_subquery$_001"."MATH_DATE": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

select
            * 
        from
            ( select
                MATH,
                to_char(MATH_DATE,'MM/DD/YYYY'),
                SCI,
                SCI_DATE,
                HIST,
                HIST_DATE,
                GEO,
                GEO_DATE,
                PE,
                PE_DATE 
            from
                subj_view vw,
                inventory bi  
            where
                bi.id = vw.id  
                and id = 161) UNPIVOT INCLUDE NULLS((value1,
            value2)  FOR code in( (MATH,
            math_date) as 'MATH',
            (SCI,
            SCI_DATE) as 'SCI',
            (HIST,
            HIST_DATE) as 'HIST',
            (GEO,
            GEO_DATE) as 'GEO',
            (PE,
            PE_DATE) as 'PE' ) );

输出看起来像

code    value1  value2
MATH    100     20070401
SCI     86  
HIST    89      201904
GEO     89      20191206
PE      90      20070118

如何使用相同的查询更改 valaue2 的格式。请帮忙。

任何建议高度赞赏。

标签: sqloracle

解决方案


for ... in列的名称必须与子句中使用的名称匹配。由于您没有为 指定别名to_char(),因此不再有match_date列。

所以使用别名;它可以与原始列名相同,这样您就不需要更改for ... in子句:

 to_char(MATH_DATE,'MM/DD/YYYY') math_date,

推荐阅读