简体   繁体   English

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

[英]select columns base on different conditions in mysql php

I need help for this code. 我需要此代码的帮助。 What did I do wrong. 我做错了什么。 I want a result that give me group by Commercial, Residential and Agriculture basic column amount in current and previous revperiod column. 我想要一个结果,可以给我按当前和以前的收益列中的商业,住宅和农业基本列数量分组。 How to accomplish with this code or better any suggestion about it. 如何完成此代码或提供更好的建议。 Thank you in advance. 先感谢您。

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'

I have this error Error Code: 1242; Subquery returns more than 1 row. 我有此错误Error Code: 1242; Subquery returns more than 1 row. Error Code: 1242; Subquery returns more than 1 row.

Not sure about your table structure but you should be able to do something like this: 不确定您的表结构,但您应该可以执行以下操作:

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;

You'll need to figure out appropriate joins for your table's primary keys. 您需要为表的主键找出合适的联接。

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

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