Я хочу вычесть строки из той же таблицы, где (где предложение отличается).
SELECT SUM(`balance`) AS `balance` FROM `vouchers` WHERE `type`='CP' AND `post_status`='yes' GROUP BY `interactive_person`;
Приведенный выше запрос дает желаемый результат для первых строк! второй запрос
SELECT SUM(`balance`) AS `balance` FROM `vouchers` WHERE `type`='CR' AND `post_status`='yes' GROUP BY `interactive_person`;
Эти запросы возвращают более одной строки, сгруппированной по интерактивному лицу. Я хочу, чтобы он вычитал запись, в которой интерактивный персонаж (это число) такое же, но тип изменился. Короче говоря, это как CashReceipt — CashPayment. Я использовал первый запрос как подзапрос второго, но ошибка показала, что подзапрос возвращает более одной строки. Мне нужна помощь, чтобы решить это!
Вы могли бы использовать case
рассчитать ваш sum()
в том же запросе
SELECT
SUM(CASE WHEN `type`='CP' THEN `balance` ELSE 0 END) AS CP_balance,
SUM(CASE WHEN `type`='CR' THEN `balance` ELSE 0 END) AS CR_balance,
SUM(CASE WHEN `type`='CP' THEN `balance` WHEN `type`='CR' THEN -1 * `balance` ELSE 0 END) AS diff
FROM `vouchers`
WHERE `post_status`='yes'
GROUP BY `interactive_person`;
Других решений пока нет …