在 CTE 之后插入,mySql

insert into after CTE, mySql

我正在编写一个过程,使用 with 生成一个 table,然后进行插入,将此 table 的字段作为值传递,但 mysql 返回一个插入中的语法错误,有人知道它是什么吗?

WITH origem AS (
    SELECT
        cnpj,
        MAX(nome_empresa)                          AS nome_empresa,
        SUM(qtd_documentos)                        AS qtd_documentos,
        codigo_uf_emitente,
        MAX(nome_uf_emitente)                      AS nome_uf_emitente,
        codigo_cidade_emitente,
        MAX(nome_cidade_emitente)                  AS nome_cidade_emitente,
        codigo_uf_destinatario,
        MAX(nome_uf_destinatario)                  AS nome_uf_destinatario,
        codigo_cidade_destinatario,
        MAX(nome_cidade_destinatario)              AS nome_cidade_destinatario,
        SUM(qtd_produtos)                          AS qtd_produtos,
        SUM(valor_total_frete)                     AS valor_total_frete,
        SUM(valor_total_nfe)                       AS valor_total_nfe,
        _ano                                       AS ano,
        _mes                                       AS mes
    FROM
        dataset_nfe_transportadoras_diario
    WHERE
        ano     = _ano
        AND mes = _mes
    GROUP BY
        cnpj,
        codigo_uf_emitente,
        codigo_cidade_emitente,
        codigo_uf_destinatario,
        codigo_cidade_destinatario
)
INSERT INTO dataset_nfe_transportadoras_mensal(
    cnpj,
    nome_empresa,
    codigo_uf_emitente,
    nome_uf_emitente,
    codigo_cidade_emitente,
    nome_cidade_emitente,
    codigo_uf_destinatario,
    nome_uf_destinatario,
    codigo_cidade_destinatario,
    nome_cidade_destinatario,
    qtd_documentos,
    qtd_produtos,
    valor_total_nfe,
    valor_total_frete,
    mes,
    ano
)

我的sqlcode就是它

您必须将 CTE 用作 SELECT

INSERT INTO dataset_nfe_transportadoras_mensal
WITH origem AS (
    SELECT
        cnpj,
        MAX(nome_empresa)                          AS nome_empresa,
        SUM(qtd_documentos)                        AS qtd_documentos,
        codigo_uf_emitente,
        MAX(nome_uf_emitente)                      AS nome_uf_emitente,
        codigo_cidade_emitente,
        MAX(nome_cidade_emitente)                  AS nome_cidade_emitente,
        codigo_uf_destinatario,
        MAX(nome_uf_destinatario)                  AS nome_uf_destinatario,
        codigo_cidade_destinatario,
        MAX(nome_cidade_destinatario)              AS nome_cidade_destinatario,
        SUM(qtd_produtos)                          AS qtd_produtos,
        SUM(valor_total_frete)                     AS valor_total_frete,
        SUM(valor_total_nfe)                       AS valor_total_nfe,
        _ano                                       AS ano,
        _mes                                       AS mes
    FROM
        dataset_nfe_transportadoras_diario
    WHERE
        ano     = _ano
        AND mes = _mes
    GROUP BY
        cnpj,
        codigo_uf_emitente,
        codigo_cidade_emitente,
        codigo_uf_destinatario,
        codigo_cidade_destinatario
)
SELECT 
    cnpj,
    nome_empresa,
    codigo_uf_emitente,
    nome_uf_emitente,
    codigo_cidade_emitente,
    nome_cidade_emitente,
    codigo_uf_destinatario,
    nome_uf_destinatario,
    codigo_cidade_destinatario,
    nome_cidade_destinatario,
    qtd_documentos,
    qtd_produtos,
    valor_total_nfe,
    valor_total_frete,
    mes,
    ano
 FROM origem