在mysql php中根据不同条件选择列

问题描述 投票:0回答:1

我需要此代码的帮助。我做错了什么。我想要一个结果,该结果可以在当前和上一个周期列中按商业、住宅和农业基本列金额进行分组。如何使用此代码完成任务或更好地提供有关它的任何建议。预先感谢您。

SELECT  (CASE (c.classcode)
         WHEN 'C' THEN 'COMMERCIAL'
         WHEN 'R' THEN 'RESIDENTIAL'
         WHEN 'A' THEN 'AGRICULTURE' END) AS CLASSIFICATION,
        ( SELECT  SUM(a.basic)
            FROM  cashreceiptitem_rpt_online a
            JOIN  cashreceipt_rpt b  ON a.rptreceiptid=b.objid
            JOIN  rptledger c  ON a.rptledgerid=c.objid
            WHERE  b.month='11'
              AND  a.revperiod='current'
        ) AS BC, 
        ( SELECT  SUM(a.basic)
            FROM  cashreceiptitem_rpt_online a
            JOIN  cashreceipt_rpt b  ON a.rptreceiptid=b.objid
            JOIN  rptledger c  ON a.rptledgerid=c.objid
            WHERE  b.month='11'
              AND  a.revperiod='previous'
        ) AS BPC
    FROM  cashreceiptitem_rpt_online a
    JOIN  cashreceipt_rpt b  ON a.rptreceiptid=b.objid
    JOIN  rptledger c  ON a.rptledgerid=c.objid
    WHERE  b.month='11'

我有这个错误

Error Code: 1242; Subquery returns more than 1 row.

sql mysql conditional-statements
1个回答
0
投票

不确定您的表结构,但您应该能够执行以下操作:

SELECT c.classcode, SUM(a.basic), SUM(aprev.basic)
FROM cashreceiptitem_rpt_online a
JOIN cashreceiptitem_rpt_online aprev 
    ON a.rptreceiptid = aprev.rptreceiptid
JOIN cashreceipt_rpt b ON a.rptreceiptid=b.objid
JOIN cashreceipt_rpt bprev ON a.rptreceiptid=bprev.objid
JOIN rptledger c ON a.rptledgerid=c.objid
WHERE b.month='11' AND bprev.month='11'
AND a.revperiod='current' AND aprev.revperiod = 'previous'
GROUP BY c.classcode;

您需要为表的主键找出适当的联接。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.