我需要此代码的帮助。我做错了什么。我想要一个结果,该结果可以在当前和上一个周期列中按商业、住宅和农业基本列金额进行分组。如何使用此代码完成任务或更好地提供有关它的任何建议。预先感谢您。
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.
不确定您的表结构,但您应该能够执行以下操作:
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;
您需要为表的主键找出适当的联接。