Как вычесть один столбец строки, где тип отличается?

Я хочу вычесть строки из той же таблицы, где (где предложение отличается).

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. Я использовал первый запрос как подзапрос второго, но ошибка показала, что подзапрос возвращает более одной строки. Мне нужна помощь, чтобы решить это!

1

Решение

Вы могли бы использовать 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`;
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector