Skip to content

升级scql版本后,原来可以执行的sql现在不能执行了 #627

@EtanWatson

Description

@EtanWatson

Issue Type

Running

Have you searched for existing issues?

Yes

OS Platform and Distribution

centos 7.8

SCQL Version

0.9.3.b1

What happend and What you expected to happen.

SELECT 
    X.ANONYMIZED_ID,
    X.CUSTOMER_CODE,
    X.NEW_INSTALL_CNT,
    X.CANCEL_SERVICE_CNT,
    X.BASIC_SERVICE_CNT,
    X.BROADBAND_CNT,
    D.UPGRADE_CNT,
    D.DOWNGRADE_CNT 
FROM (
    SELECT 
        A.ANONYMIZED_ID,
        C.CUSTOMER_CODE,
        C.NEW_INSTALL_CNT,
        C.CANCEL_SERVICE_CNT,
        C.BASIC_SERVICE_CNT,
        C.BROADBAND_CNT 
    FROM 
        T_CUSTOMER_MASTER A 
    LEFT JOIN (
        SELECT 
            T2.CUSTOMER_CODE,
            T2.BASIC_SERVICE_CNT,
            T2.BROADBAND_CNT,
            T2.NEW_INSTALL_CNT,
            T1.CANCEL_SERVICE_CNT 
        FROM (
            SELECT 
                CUSTOMER_CODE,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('10', '16', '17', '33', '50') 
                    AND ACTIVE_FLAG = '0' THEN 1 ELSE 0 
                END) BASIC_SERVICE_CNT,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('40') 
                    AND ACTIVE_FLAG = '0' THEN 1 ELSE 0 
                END) BROADBAND_CNT,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('10', '16', '17', '33', '50') 
                    AND STR_TO_DATE(ACTIVE_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(ACTIVE_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
                    THEN 1 ELSE 0 
                END) NEW_INSTALL_CNT 
            FROM 
                T_SERVICE_RECORDS 
            WHERE 
                ACTIVE_DATE IS NOT NULL 
                AND ACTIVE_DATE != ''
            GROUP BY 
                CUSTOMER_CODE 
        ) T2 
        LEFT JOIN (
            SELECT 
                CUSTOMER_CODE,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('10', '16', '17', '33', '50') 
                    AND STR_TO_DATE(CLOSE_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(CLOSE_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
                    THEN 1 ELSE 0 
                END) CANCEL_SERVICE_CNT 
            FROM 
                T_SERVICE_RECORDS 
            WHERE 
                CLOSE_DATE IS NOT NULL 
                AND CLOSE_DATE != ''
            GROUP BY 
                CUSTOMER_CODE 
        ) T1 
        ON T2.CUSTOMER_CODE = T1.CUSTOMER_CODE 
    ) C 
    ON A.CUSTOMER_CODE = C.CUSTOMER_CODE 
) X 
LEFT JOIN (
    SELECT 
        CUSTOMER_CODE,
        SUM(CASE 
            WHEN TRANSACTION_TYPE IN ('236', '136') 
            AND STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
            THEN 1 ELSE 0 
        END) UPGRADE_CNT,
        SUM(CASE 
            WHEN TRANSACTION_TYPE IN ('226', '126') 
            AND STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
            THEN 1 ELSE 0 
        END) DOWNGRADE_CNT 
    FROM 
        T_TRANSACTION_HISTORY 
    WHERE 
        TRANSACTION_STATUS = '9'
        AND PROCESSING_FLAG = '0'
        AND CANCELLATION_FLAG = '0'
    GROUP BY 
        CUSTOMER_CODE 
) D 
ON X.CUSTOMER_CODE = D.CUSTOMER_CODE 这个是我当前sql,之前版本是0.9.1.b1下是可以执行的,但是升版本以后报错

Configuration used to run SCQL.

SELECT 
    X.ANONYMIZED_ID,
    X.CUSTOMER_CODE,
    X.NEW_INSTALL_CNT,
    X.CANCEL_SERVICE_CNT,
    X.BASIC_SERVICE_CNT,
    X.BROADBAND_CNT,
    D.UPGRADE_CNT,
    D.DOWNGRADE_CNT 
FROM (
    SELECT 
        A.ANONYMIZED_ID,
        C.CUSTOMER_CODE,
        C.NEW_INSTALL_CNT,
        C.CANCEL_SERVICE_CNT,
        C.BASIC_SERVICE_CNT,
        C.BROADBAND_CNT 
    FROM 
        T_CUSTOMER_MASTER A 
    LEFT JOIN (
        SELECT 
            T2.CUSTOMER_CODE,
            T2.BASIC_SERVICE_CNT,
            T2.BROADBAND_CNT,
            T2.NEW_INSTALL_CNT,
            T1.CANCEL_SERVICE_CNT 
        FROM (
            SELECT 
                CUSTOMER_CODE,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('10', '16', '17', '33', '50') 
                    AND ACTIVE_FLAG = '0' THEN 1 ELSE 0 
                END) BASIC_SERVICE_CNT,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('40') 
                    AND ACTIVE_FLAG = '0' THEN 1 ELSE 0 
                END) BROADBAND_CNT,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('10', '16', '17', '33', '50') 
                    AND STR_TO_DATE(ACTIVE_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(ACTIVE_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
                    THEN 1 ELSE 0 
                END) NEW_INSTALL_CNT 
            FROM 
                T_SERVICE_RECORDS 
            WHERE 
                ACTIVE_DATE IS NOT NULL 
                AND ACTIVE_DATE != ''
            GROUP BY 
                CUSTOMER_CODE 
        ) T2 
        LEFT JOIN (
            SELECT 
                CUSTOMER_CODE,
                SUM(CASE 
                    WHEN SERVICE_TYPE IN ('10', '16', '17', '33', '50') 
                    AND STR_TO_DATE(CLOSE_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(CLOSE_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
                    THEN 1 ELSE 0 
                END) CANCEL_SERVICE_CNT 
            FROM 
                T_SERVICE_RECORDS 
            WHERE 
                CLOSE_DATE IS NOT NULL 
                AND CLOSE_DATE != ''
            GROUP BY 
                CUSTOMER_CODE 
        ) T1 
        ON T2.CUSTOMER_CODE = T1.CUSTOMER_CODE 
    ) C 
    ON A.CUSTOMER_CODE = C.CUSTOMER_CODE 
) X 
LEFT JOIN (
    SELECT 
        CUSTOMER_CODE,
        SUM(CASE 
            WHEN TRANSACTION_TYPE IN ('236', '136') 
            AND STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
            THEN 1 ELSE 0 
        END) UPGRADE_CNT,
        SUM(CASE 
            WHEN TRANSACTION_TYPE IN ('226', '126') 
            AND STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S') > SUBDATE(STR_TO_DATE(REQUEST_DATE, '%Y%m%d%H%M%S'), INTERVAL 1 YEAR) 
            THEN 1 ELSE 0 
        END) DOWNGRADE_CNT 
    FROM 
        T_TRANSACTION_HISTORY 
    WHERE 
        TRANSACTION_STATUS = '9'
        AND PROCESSING_FLAG = '0'
        AND CANCELLATION_FLAG = '0'
    GROUP BY 
        CUSTOMER_CODE 
) D 
ON X.CUSTOMER_CODE = D.CUSTOMER_CODE

SCQL log output.

WARN[0500] content-type (text/plain; charset=utf-8) is not one of application/json and application/x-protobuf 
[fetch]err: Code: 320, message:RunExecutionPlan run jobs(92b2784f-559a-11f0-9d7e-0242ac160002) failed, catch std::exception=[Enforce fail at engine/datasource/csvdb_adaptor.cc:194] !duck_result->HasError(). send query to DuckDB failed, msg=Binder Error: Referenced table "C" not found!
Candidate tables: "D", "A"
LINE 1: ...evt_cb_trade_his"."CUSTOMER_CODE ") as "D" on "C"."NEW_INSTALL_CNT"="D"."CUSTOMER_CODE";

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions