Предполагая, что то, что вы показываете, является частью оператора SQL, я думаю, что вам нужно выражение case
вместо выражения if
. Первый - это условная логика c, которую вы можете использовать в своем запросе, а второй - структура управления потоком, которая вступает в действие в кодовых блоках, таких как хранимая процедура или аналогичная:
CASE WHEN MAX(A.OS) <> 0
THEN MAX(A.OS)
+ SUM(CASE WHEN TipoMovimento = 'E' THEN Quantidade ELSE 0 END)
- SUM(CASE WHEN TipoMovimento ='S' THEN Quantidade else 0 END)
ELSE SUM(CASE WHEN TipoMovimento = 'E' THEN Quantidade ELSE 0 END)
END as ClosingStock
На SQL сервере вы можете express тот же лог c с IIF()
; Я предпочитаю CASE
, потому что это стандартный SQL.
Обратите внимание, что псевдоним столбца объявляется только один раз, в конце выражения.
Также, предположительно, MAX(A,OS)
- это должно быть MAX(A.OS)
.