Есть несколько способов сделать это, используя CASE
в своем выражении SQL ИЛИ, если у вас ОЧЕНЬ большой список, введите поле, которое будет содержать +1 или -1 в зависимости от типа транзакции, а затем, когдаВы выполняете значения, умножающие значение, и, наконец, делаете сумму.Пример, здесь;
ALTER TABLE Tran ADD COLUMN tran_multiple INT default 1;
-- update each value as req.
UPDATE Tran set tran_multiple=-1 WHERE Tran.id = xxxx;
SELECT sum (TranValue.Value * Tran.tran_multiple) as Val From TranValue
INNER JOIN Tran on TranValue.Type = Tran.Type
Здесь я предполагаю, что ваша таблица TranValue хранит значения.Конечно, вы можете использовать выражение Group By GROUP BY Tran.type
в своем выражении вместе с Tran.type
в вашем списке полей SELECT (для перечисления по Tran.Type & Values).Тогда написание простого кода не должно быть проблемой.
Однако я бы попросил вас не использовать VALUE
или VALUES
в вашем SQL, поскольку он очень похож на RESERVED KEYWORDs
( просто предложение )
Я не привожу здесь пример CASE
, поскольку вы не указали, какую базу данных вы используете (синтаксис варьируется), а также поскольку вы утверждаете, что существует большое количество типов.
Если выпредпочтение кодированию вместо SQL, то же самое можно сделать, определив словарь, в котором каждый тип содержит +1 или -1 в зависимости от тип , а затем, когда пользователь вводит значения, которые выможно умножить , набрать и сделать это.
Надеюсь, это поможет.