繁体   English   中英

执行 hql 查询时出错

[英]Getting error while executing the hql query

在 hql 查询下方执行此操作时出现错误。 以下是 hql 中的查询及其生成的错误消息。 请提出更改建议

String query = "SELECT " +
        "c " +
        " FROM (select DISTINCT " +
        "b " +
        "FROM (select " +
        "a.gcsAccountId, " +
        "a.msisdn, " +
        "a.partnerCode as bankID," +
        "0 as processingStatus from ( select min(additionDate) fechaAfilia, a.gcsAccountId, a.partnerCode, a.msisdn from RGcscustomerAccountM c, " +
        "RGcscustomerFundingAcctMp a, MonthlyGcsBillPaymentL mf where c.gcsAccountId=a.gcsAccountId and a.status ='A' and c.status='A' and " +
        "mf.gcsAccountId = a.gcsAccountId and mf.collectorStatus in (0,1)and coalesce(mf.monthlyBillAmount,0)<> 0 " +
        "group by a.partnerCode,a.gcsAccountId, a.msisdn order by a.gcsAccountId, a.msisdn, fechaAfilia)a where (a.fechaAfilia, a.gcsAccountId, a.msisdn) " +
        "in (select min(fechaAfilia), gcsAccountId,msisdn from (select min(additionDate) fechaAfilia, a.gcsAccountId, a.partnerCode, a.msisdn from RGcscustomerAccountM c, " +
        "RGcscustomerFundingAcctMp a where c.gcsAccountId=a.gcsAccountId and a.status ='A' and c.status='A' and c.gcsAccountId = a.gcsAccountId group by a.partnerCode, " +
        "a.gcsAccountId, a.msisdn order by a.gcsAccountId, a.msisdn, fechaAfilia) group by gcsAccountId,msisdn ) union all select a.gcsAccountId, a.msisdn ,a.partnerCode, " +
        "0 as processingStatus from ( select min(additionDate) fechaAfilia, a.gcsAccountId, a.partnerCode, a.msisdn from RGcscustomerAccountM c, RGcscustomerFundingAcctMp " +
        "a,FtNsfTL nsf,FtTransferTO t where c.gcsAccountId=a.gcsAccountId and a.status ='A' and c.status='A' and nsf.gcsAccountId=a.gcsAccountId and nsf.nsfAmount<> 0 " +
        "and nsf.isNsfHandledStatus in(0,1)and nsf.gcsAccountId = t.gcsAccountId and nsf.gcsSequenceNo = t.gcsSequenceNo and t.msisdn = a.msisdn group " +
        "by a.partnerCode,a.gcsAccountId, a.msisdn order by a.gcsAccountId, a.msisdn, fechaAfilia) a where (a.fechaAfilia,a.gcsAccountId, a.msisdn) " +
        "in( select MIN(fechaAfilia), gcsAccountId, msisdn from( select min(additionDate) fechaAfilia,a.gcsAccountId, a.partnerCode,a.msisdn from RGcscustomerAccountM " +
        "c, RGcscustomerFundingAcctMp a WHERE c.gcsAccountId = a.gcsAccountId AND a.status = 'A' AND c.status = 'A' GROUP BY a.partnerCode, a.gcsAccountId, " +
        "a.msisdn ORDER BY a.gcsAccountId, a.msisdn, fechaAfilia) GROUP BY " +
        "gcsAccountId, " +
        "msisdn " +
        ")) b " +
        "WHERE " +
        "b.bankID= 57 ORDER BY gcsAccountId ) c ";

这是错误,它的显示,可能缺少某些东西。

unexpected token: ( near line 1, column 16 [SELECT c  FROM (select DISTINCT b FROM (select a.gcsAccountId, a.msisdn, a.partnerCode as bankID,0 as processingStatus from ( select min(additionDate) fechaAfilia, a.gcsAccountId, a.partnerCode, a.msisdn from

这是更改后的查询。

String query = "SELECT " +
        "c.gcsAccountId,c.msisdn,c.bankID,c.processingStatus FROM (select DISTINCT b.gcsAccountId,b.msisdn,b.bankID,b.processingStatus FROM (select  "+
        "a.gcsAccountId, " +
        "a.msisdn, " +
        "a.partnerCode as bankID," +
        "0 as processingStatus from ( select min(additionDate) fechaAfilia, a.gcsAccountId, BankId as a.partnerCode , a.msisdn from RGcscustomerAccountM c, " +
        "RGcscustomerFundingAcctMp a, MonthlyGcsBillPaymentL mf where c.gcsAccountId=a.gcsAccountId and a.status ='A' and c.status='A' and " +
        "mf.gcsAccountId = a.gcsAccountId and mf.collectorStatus in (0,1)and coalesce(mf.monthlyBillAmount,0)<> 0 " +
        "group by a.partnerCode,a.gcsAccountId, a.msisdn order by a.gcsAccountId, a.msisdn, fechaAfilia)a where (a.fechaAfilia, a.gcsAccountId, a.msisdn) " +
        "in (select min(fechaAfilia), gcsAccountId,msisdn from (select min(additionDate) fechaAfilia, a.gcsAccountId, a.partnerCode, a.msisdn from RGcscustomerAccountM c, " +
        "RGcscustomerFundingAcctMp a where c.gcsAccountId=a.gcsAccountId and a.status ='A' and c.status='A' and c.gcsAccountId = a.gcsAccountId group by a.partnerCode, " +
        "a.gcsAccountId, a.msisdn order by a.gcsAccountId, a.msisdn, fechaAfilia) group by gcsAccountId,msisdn ) union all select a.gcsAccountId, a.msisdn ,a.partnerCode, " +
        "0 as processingStatus from ( select min(additionDate) fechaAfilia, a.gcsAccountId, a.partnerCode, a.msisdn from RGcscustomerAccountM c, RGcscustomerFundingAcctMp " +
        "a,FtNsfTL nsf,FtTransferTO t where c.gcsAccountId=a.gcsAccountId and a.status ='A' and c.status='A' and nsf.gcsAccountId=a.gcsAccountId and nsf.nsfAmount<> 0 " +
        "and nsf.isNsfHandledStatus in(0,1)and nsf.gcsAccountId = t.gcsAccountId and nsf.gcsSequenceNo = t.gcsSequenceNo and t.msisdn = a.msisdn group " +
        "by a.partnerCode,a.gcsAccountId, a.msisdn order by a.gcsAccountId, a.msisdn, fechaAfilia) a where (a.fechaAfilia,a.gcsAccountId, a.msisdn) " +
        "in( select MIN(fechaAfilia), gcsAccountId, msisdn from( select min(additionDate) fechaAfilia,a.gcsAccountId, a.partnerCode,a.msisdn from RGcscustomerAccountM " +
        "c, RGcscustomerFundingAcctMp a WHERE c.gcsAccountId = a.gcsAccountId AND a.status = 'A' AND c.status = 'A' GROUP BY a.partnerCode, a.gcsAccountId, " +
        "a.msisdn ORDER BY a.gcsAccountId, a.msisdn, fechaAfilia) GROUP BY " +
        "gcsAccountId, " +
        "msisdn " +
        ")) b " +
        "WHERE " +
        "b.bankID= 68 ORDER BY gcsAccountId ) c ";
SELECT c  FROM (select DISTINCT b FROM (select ...

好吧,您正在从返回distinct b的子查询中选择c 那行不通。

暂无
暂无

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

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