проверьте, является ли значение НУЛЕВЫМ или меньше чем 0 в одном операторе TSQL

ISNULL(SUM(MyTable.Total), 0) AS Total

Как я могу изменить вышеупомянутый оператор, чтобы также проверить, является ли Общее количество меньше чем 0 (нуль), такой, что, Если Общее количество является ПУСТЫМ или меньше чем 0 (отрицаний), я присваиваю 0 Общему количеству

15
задан pedram 26 May 2016 в 05:57
поделиться

4 ответа

CASE WHEN ISNULL(SUM(MyTable.Total), 0) <= 0 THEN 0
     ELSE SUM(MyTable.Total)
END AS Total
23
ответ дан 1 December 2019 в 01:45
поделиться
CASE 
WHEN COALESCE(SUM(MyTable.Total), 0) <= 0 THEN 0
ELSE SUM(MyTable.Total)
END AS [Total]
7
ответ дан 1 December 2019 в 01:45
поделиться
CASE WHEN 
  COALESCE(SUM(MyTable.Total),0) <= 0 
THEN 
   0 
ELSE 
  SUM(MyTable.Total)
END AS Total
1
ответ дан 1 December 2019 в 01:45
поделиться

Как насчет

SUM(ISNULL(MyTable.Total, 0)) AS Total

Я предпочитаю это, поскольку реализация NULL в базах данных не всегда логична и различается у разных поставщиков, а также от того, включены ли ANSI_NULLS или нет.

Например. SUM of NULL, NULL и 1 возвращается как 1, но (1 + NULL + NULL) равно NULL ...

Затем вы можете сделать меньше 0 с помощью CASE, как указано выше, таким образом

CASE 
WHEN SUM(ISNULL(MyTable.Total,0)) <= 0 THEN 0
ELSE SUM(ISNULL(MyTable.Total,0))
END AS [Total]
0
ответ дан 1 December 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: