【问题标题】:error sql (1064): you have an error in your SQL syntax''错误 sql (1064): 你的 SQL 语法有错误''
【发布时间】:2020-04-20 16:36:02
【问题描述】:

我想运行这个查询但是得到一个错误:

error sql (1064):您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在第 97 行的 '' 附近使用的正确语法

我的查询是:

CREATE PROCEDURE `ControlRecibos` ()
BEGIN
    Select distinct T0.gestionescobra_tks_regional
    ,T0.gestionescobra_tks_cobrador
    ,T0.gestionescobra_tks_poliza
    ,T0.gestionescobra_tks_codigodecli
    ,T0.gestionescobra_tks_apellidoyno
    ,T0.gestionescobra_tks_formadepago
    ,T0.gestionescobra_tks_numerorecib
    ,T0.gestionescobra_tks_observacion
    ,T0.gestionescobra_tks_fechareport
    ,T0.gestionescobra_tks_montoprima
    ,T1.nocobradosmes_tks_montoprimama
    ,T1.nocobradosmes_tks_montoprima
    From vtiger_gestionescobra T0 inner join 
    (   Select *
            From(
                    Select distinct gestionescobra_tks_cobrador,gestionescobra_tks_poliza,sum(gestionescobra_tks_montoprima) as MonCobrado
                            From vtiger_gestionescobra 
                        where gestionescobra_tks_fechareport between '2020-03-20' and '2020-04-20' and
                        gestionescobra_tks_actividad = 'Cobranza' and gestionescobra_tks_numerorecib <>'' and   gestionescobra_tks_notransacci <>'' and gestionescobra_tks_montoprima <> 0 and gestionescobra_tks_formadepago='M'   group by gestionescobra_tks_cobrador,gestionescobra_tks_poliza  )T0 inner Join  (Select T0.nocobradosmes_tks_poliza,T0.nocobradosmes_tks_montoprimama,T0.nocobradosmes_tks_montoprima
            From vtiger_nocobradosmes T0 inner join (
                        Select distinct nocobradosmes_tks_poliza,max(nocobradosmesid) as val
                            From vtiger_nocobradosmes
                            group by nocobradosmes_tks_poliza)

            T1 ON T0.nocobradosmes_tks_poliza=T1.nocobradosmes_tks_poliza
            where T0.nocobradosmesid=T1.val and nocobradosmes_tks_formadepago='Mensual') 
            T1 ON T0.gestionescobra_tks_poliza=T1.nocobradosmes_tks_poliza 
            where (nocobradosmes_tks_montoprima*50)/100>MonCobrado
    Union
            Select *
            From(Select gestionescobra_tks_cobrador,gestionescobra_tks_poliza,sum(gestionescobra_tks_montoprima) as MonCobrado
            From vtiger_gestionescobra 
            where gestionescobra_tks_fechareport between  '2020-03-20' and '2020-04-20' and
            gestionescobra_tks_actividad = 'Cobranza' and gestionescobra_tks_numerorecib <>'' and 
            gestionescobra_tks_notransacci <>'' and gestionescobra_tks_montoprima <> 0 and gestionescobra_tks_formadepago='T'
            group by gestionescobra_tks_cobrador,gestionescobra_tks_poliza) 
            T0 inner Join 
            (Select T0.nocobradosmes_tks_poliza,T0.nocobradosmes_tks_montoprimama,T0.nocobradosmes_tks_montoprima
            From vtiger_nocobradosmes T0 inner join (Select distinct nocobradosmes_tks_poliza,max(nocobradosmesid) as val
            From vtiger_nocobradosmes
            group by nocobradosmes_tks_poliza) T1 ON T0.nocobradosmes_tks_poliza=T1.nocobradosmes_tks_poliza
            where T0.nocobradosmesid=T1.val and nocobradosmes_tks_formadepago='Trimestral' ) 
            T1 ON T0.gestionescobra_tks_poliza=T1.nocobradosmes_tks_poliza 
            where (nocobradosmes_tks_montoprima)/3>MonCobrado
    Union
            Select *
            From(Select gestionescobra_tks_cobrador,gestionescobra_tks_poliza,sum(gestionescobra_tks_montoprima) as MonCobrado
            From vtiger_gestionescobra 
            where gestionescobra_tks_fechareport between '2020-03-20' and '2020-04-20' and
            gestionescobra_tks_actividad = 'Cobranza' and gestionescobra_tks_numerorecib <>'' and 
            gestionescobra_tks_notransacci <>'' and gestionescobra_tks_montoprima <> 0 and gestionescobra_tks_formadepago='S'
            group by gestionescobra_tks_cobrador,gestionescobra_tks_poliza)
             T0 inner Join 
            (Select T0.nocobradosmes_tks_poliza,T0.nocobradosmes_tks_montoprimama,T0.nocobradosmes_tks_montoprima
            From vtiger_nocobradosmes T0 inner join 
            (Select distinct nocobradosmes_tks_poliza,max(nocobradosmesid) as val
            From vtiger_nocobradosmes
            group by nocobradosmes_tks_poliza) T1 ON T0.nocobradosmes_tks_poliza=T1.nocobradosmes_tks_poliza
            where T0.nocobradosmesid=T1.val and nocobradosmes_tks_formadepago='Semestral') 
            T1 ON T0.gestionescobra_tks_poliza=T1.nocobradosmes_tks_poliza 
            where (nocobradosmes_tks_montoprima)/6>MonCobrado
    Union
            Select *
            From(Select gestionescobra_tks_cobrador,gestionescobra_tks_poliza,sum(gestionescobra_tks_montoprima) as MonCobrado
            From vtiger_gestionescobra
            where gestionescobra_tks_fechareport between '2020-03-20' and '2020-04-20'and
            gestionescobra_tks_actividad = 'Cobranza' and gestionescobra_tks_numerorecib <>'' and 
            gestionescobra_tks_notransacci <>'' and gestionescobra_tks_montoprima <> 0 and gestionescobra_tks_formadepago='A'
            group by gestionescobra_tks_cobrador,gestionescobra_tks_poliza) 
            T0 inner Join 
            (Select T0.nocobradosmes_tks_poliza,T0.nocobradosmes_tks_montoprimama,T0.nocobradosmes_tks_montoprima
            From vtiger_nocobradosmes 
            T0 inner join (
                            Select distinct nocobradosmes_tks_poliza,max(nocobradosmesid) as val
                                    From vtiger_nocobradosmes
                                    group by nocobradosmes_tks_poliza
                        ) T1 ON T0.nocobradosmes_tks_poliza=T1.nocobradosmes_tks_poliza
            where T0.nocobradosmesid=T1.val and nocobradosmes_tks_formadepago='Anual'
            )
             T1 ON T0.gestionescobra_tks_poliza=T1.nocobradosmes_tks_poliza 
            where (nocobradosmes_tks_montoprima)/12>MonCobrado
    )
     T1 ON T0.gestionescobra_tks_cobrador=T1.gestionescobra_tks_cobrador 
     and T0.gestionescobra_tks_poliza=T1.gestionescobra_tks_poliza
    where gestionescobra_tks_fechareport between '2020-03-20' and '2020-04-20' and
    gestionescobra_tks_actividad = "Cobranza" 
    and gestionescobra_tks_numerorecib <>'' 
    and gestionescobra_tks_notransacci <>'' 
    and gestionescobra_tks_montoprima <> 0
    ORDER BY 1,2;

结束

MYSQL WorkBench 仅显示最后两行的问题,例如 2 中的“缺少分号”和 END 中发现的无关输入

有什么问题?

【问题讨论】:

  • 我们对数据库一无所知,因此很难提供帮助。但是,您应该直接在 MariaDB 命令提示符下运行查询。见mariadb.com/kb/en/basic-sql-debugging。我还将对查询进行分段并仅将联合的内容加载到工作台中,以便更轻松地确定问题。

标签: mysql mariadb heidisql


【解决方案1】:

您需要在创建存储过程时将DELIMITER 设置为分号以外的其他内容。

【讨论】:

    猜你喜欢
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多