繁体   English   中英

我无法在 sql 中解释/解决的错误消息

[英]Error message which I can't explain/solve in sql

这段代码给出了这个我真的没有得到的错误(Select 工作正常):

'SQL 错误 [2022] [42601]:SQL 编译错误:缺少列规范'

CREATE OR REPLACE TABLE ANALYSE_PMN.DTE_INSTALL_WFM AS
                        (
                               SELECT BUT000.PARTNER                    AS ZPARTNER ,
                                      BUT000.BPKIND                     AS SRT ,
                                      FKKVKP.KTOKL                      AS REKENINGKLASSE ,
                                      EVER.VKONTO                       AS CONTRACTREKENING ,
                                      EVER.VERTRAG                      AS CONTRACT ,
                                      TO_CHAR(EVER.EINZDAT, 'YYYYMMDD') AS INHUISDATUM ,
                                      TO_CHAR(EVER.AUSZDAT, 'YYYYMMDD') AS UITHUISDATUM ,
                                      EANL.ANLAGE                       AS AANSLUITING ,
                                      EANL.SPARTE                       AS PRODUCT ,
                                      EANLH.ABLEINH                     AS PORTIE ,
                                      TO_CHAR(EANLH.AB, 'YYYYMMDD')     AS VANAF ,
                                      TO_CHAR(EANLH.BIS, 'YYYYMMDD')    AS TOT ,
                                      SUBSTR(EANLH.ABLEINH, 2, 4)       AS PORTIE_MMDD ,
                                      DTE_PERIODE.PERIODE               AS GEPL_AFR_YYYYMM ,
                                      DTE_PERIODE.PERIODE
                                             || SUBSTR(EANLH.ABLEINH, 4, 2) AS GEPL_AFR_YYYYMMDD ,
                                      NVL(ZZEAN_VERBR_HG, 0) ,
                                      NVL(ZZEAN_VERBR_LG, 0) ,
                                      NVL(ZZEAN_VERBR_HG, 0) + NVL(ZZEAN_VERBR_LG, 0) AS ZZEAN_VERBR ,
                                      NVL(ZZEAN_TERUG_HG, 0) ,
                                      NVL(ZZEAN_TERUG_LG, 0) ,
                                      NVL(ZZEAN_TERUG_HG, 0) + NVL(ZZEAN_TERUG_LG, 0)                                                       AS ZZEAN_TERUG ,
                                      (NVL(ZZEAN_VERBR_HG, 0) + NVL(ZZEAN_VERBR_LG, 0)) - (NVL(ZZEAN_TERUG_HG, 0) + NVL(ZZEAN_TERUG_LG, 0)) AS ZZEAN_VERBR_TOTAAL
                               FROM   ANALYSE_PMN.DTE_PERIODE ,
                                      OWNER_OSP.OSP_EVER EVER
                               JOIN   OWNER_OSP.OSP_EANL EANL
                               ON     EANL.ANLAGE = EVER.ANLAGE
                               JOIN   OWNER_OSP.OSP_EANLH EANLH
                               ON     EANLH.ANLAGE = EVER.ANLAGE
                               JOIN   OWNER_OSP.OSP_FKKVKP FKKVKP
                               ON     EVER.VKONTO = FKKVKP.VKONT
                               JOIN   OWNER_OSP.OSP_BUT000 BUT000
                               ON     BUT000.PARTNER = FKKVKP.GPART
                               WHERE  EANL.SPARTE IN ( 'E' ,
                                                      'G' )
                               AND    TO_CHAR(EVER.EINZDAT, 'YYYYMMDD') < SUBSTR(DTE_PERIODE.PERIODE, 1, 6)
                                             || SUBSTR(EANLH.ABLEINH, 4, 2)
                               AND    EVER.AUSZDAT = '9999-12-31'
                               AND    TO_DATE(DTE_PERIODE.PERIODE
                                             || SUBSTR(EANLH.ABLEINH, 4, 2), 'YYYYMMDD') BETWEEN EANLH.AB AND    EANLH.BIS
                               AND    EANL.BEGRU = 'R'
                               AND    EANLH.ABLEINH LIKE 'C%'
                               AND    SUBSTR(DTE_PERIODE.PERIODE, 5, 2) = SUBSTR(EANLH.ABLEINH, 2, 2)
                        ) ;

您的某些列没有 AS 子句。 你能试试这个吗:

CREATE OR REPLACE TABLE ANALYSE_PMN.DTE_INSTALL_WFM AS
(
        SELECT BUT000.PARTNER                    AS ZPARTNER ,
                BUT000.BPKIND                     AS SRT ,
                FKKVKP.KTOKL                      AS REKENINGKLASSE ,
                EVER.VKONTO                       AS CONTRACTREKENING ,
                EVER.VERTRAG                      AS CONTRACT ,
                TO_CHAR(EVER.EINZDAT, 'YYYYMMDD') AS INHUISDATUM ,
                TO_CHAR(EVER.AUSZDAT, 'YYYYMMDD') AS UITHUISDATUM ,
                EANL.ANLAGE                       AS AANSLUITING ,
                EANL.SPARTE                       AS PRODUCT ,
                EANLH.ABLEINH                     AS PORTIE ,
                TO_CHAR(EANLH.AB, 'YYYYMMDD')     AS VANAF ,
                TO_CHAR(EANLH.BIS, 'YYYYMMDD')    AS TOT ,
                SUBSTR(EANLH.ABLEINH, 2, 4)       AS PORTIE_MMDD ,
                DTE_PERIODE.PERIODE               AS GEPL_AFR_YYYYMM ,
                DTE_PERIODE.PERIODE|| SUBSTR(EANLH.ABLEINH, 4, 2) AS GEPL_AFR_YYYYMMDD ,
                NVL(ZZEAN_VERBR_HG, 0) AS ZZEAN_VERBR_HG,
                NVL(ZZEAN_VERBR_LG, 0) AS ZZEAN_VERBR_LG,
                NVL(ZZEAN_VERBR_HG, 0) + NVL(ZZEAN_VERBR_LG, 0) AS ZZEAN_VERBR ,
                NVL(ZZEAN_TERUG_HG, 0) AS ZZEAN_TERUG_HG,
                NVL(ZZEAN_TERUG_LG, 0) AS ZZEAN_TERUG_LG,
                NVL(ZZEAN_TERUG_HG, 0) + NVL(ZZEAN_TERUG_LG, 0)                                                       AS ZZEAN_TERUG ,
                (NVL(ZZEAN_VERBR_HG, 0) + NVL(ZZEAN_VERBR_LG, 0)) - (NVL(ZZEAN_TERUG_HG, 0) + NVL(ZZEAN_TERUG_LG, 0)) AS ZZEAN_VERBR_TOTAAL
        FROM   ANALYSE_PMN.DTE_PERIODE ,
                OWNER_OSP.OSP_EVER EVER
        JOIN   OWNER_OSP.OSP_EANL EANL
        ON     EANL.ANLAGE = EVER.ANLAGE
        JOIN   OWNER_OSP.OSP_EANLH EANLH
        ON     EANLH.ANLAGE = EVER.ANLAGE
        JOIN   OWNER_OSP.OSP_FKKVKP FKKVKP
        ON     EVER.VKONTO = FKKVKP.VKONT
        JOIN   OWNER_OSP.OSP_BUT000 BUT000
        ON     BUT000.PARTNER = FKKVKP.GPART
        WHERE  EANL.SPARTE IN ( 'E' ,
                                'G' )
        AND    TO_CHAR(EVER.EINZDAT, 'YYYYMMDD') < SUBSTR(DTE_PERIODE.PERIODE, 1, 6)
                        || SUBSTR(EANLH.ABLEINH, 4, 2)
        AND    EVER.AUSZDAT = '9999-12-31'
        AND    TO_DATE(DTE_PERIODE.PERIODE
                        || SUBSTR(EANLH.ABLEINH, 4, 2), 'YYYYMMDD') BETWEEN EANLH.AB AND    EANLH.BIS
        AND    EANL.BEGRU = 'R'
        AND    EANLH.ABLEINH LIKE 'C%'
        AND    SUBSTR(DTE_PERIODE.PERIODE, 5, 2) = SUBSTR(EANLH.ABLEINH, 2, 2)
) ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM