mariadb 在CTE之后插入,mySql

wmomyfyw  于 7个月前  发布在  Mysql
关注(0)|答案(1)|浏览(82)

我正在写一个过程,使用with生成一个表,然后进行一个插入,将这个表的字段作为一个值传递,但是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是它

liwlm1x9

liwlm1x91#

必须将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

相关问题