#sql
Вопрос:
это моя таблица поручителей ниже с запросом. я хочу суммировать столбец кредита без значения pay_action_id, когда 2. Но вывод запроса равен нулю.
SELECT sum(credit) from voucers where pay_action_id<>2
------------------------------
|debit | credit | pay_action_id|
------------------------------
|40.00 | 4.00 | null |
------------------------------
|0.00 | 46.00 | 2 |
------------------------------
|0.00 | 34.00 | 1 |
------------------------------
|40.00 | 0.00 | null |
------------------------------
результат: будет 38, если будет решено
Комментарии:
1. Отметьте свой вопрос только той базой данных, которую вы используете.
2. Удалены конфликтующие теги базы данных, пожалуйста, добавьте тот, который вы на самом деле используете!
Ответ №1:
Как и в большинстве других сравнений, <>
отфильтровывайте NULL
значения. Если они вам нужны, вам нужно их явно включить. Один из способов-это:
SELECT sum(credit)
FROM voucers
WHERE pay_action_id <> 2 OR pay_action_id IS NULL;
Как в MySQL, так и в Postgres есть NULL
безопасные операторы сравнения. Postgres поддерживает стандарт:
WHERE pay_action_id IS DISTINCT FROM 2
В MySQL есть индивидуальный оператор:
WHERE NOT (pay_action_id <=> 2)