выбрать столбцы базы на разных условиях в MySQL PHP

0

Мне нужна помощь для этого кода. Что я сделал не так. Я хочу получить результат, который дает мне группу по количеству базовых столбцов Commercial, Residential and Agriculture в текущей и предыдущей колонках revepiod. Как выполнить с этим кодом или лучше любое предложение об этом. Заранее спасибо.

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. Error Code: 1242; Subquery returns more than 1 row.

  • 1
    Какой ожидаемый результат вы пытаетесь получить?
  • 0
    Я считаю, что вам нужно использовать GROUP BY для получения сумм, а не использовать подзапросы для каждого типа. Дайте мне знать, если вам нужна помощь, используя его.
Показать ещё 3 комментария
Теги:
condition

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;

Вам нужно будет найти подходящие соединения для основных ключей таблицы.

  • 0
    Я получил код ошибки: 1054; Неизвестный столбец «aprev» в «where clause»
  • 0
    Отредактировано, чтобы исправить проблему
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню