2016-07-04 11 views
0

Я использую SQL Server 2014 и у меня есть запрос с этой строки кода:T-SQL синтаксис, чтобы показать как отрицательные значения и NULL значения как 0

ISNULL(b.[LEISURE],0) AS 'LEISURE' 

Значение отдыха также может быть отрицательным, в этом случае я хочу, чтобы значение также отображалось как 0.

Как обернуть оба условия в свой код?

ответ

1

Вместо вашего данного блока кода, использование:

IIF(b.[LEISURE] IS NULL OR b.[LEISURE]<0, 0, b.[LEISURE]) 

или

IIF(b.[LEISURE]>=0, b.[LEISURE], 0) 
+0

Просто любите простоту вашего решения! – user3115933

1

использование СЛУЧАЙ Expression ..

Case when b.lesure<0 or b.lesure is null then 0 else b.lesure End 
1

Вы можете использовать CASE вместо:

SELECT CASE WHEN b.LEISURE IS NULL OR b.LEISURE <= 0 
     THEN 0 
     ELSE b.[LEISURE] END AS 'LEISURE' 
FROM dbo.TableName 
0

Вы можете использовать IIF:

SELECT IIF(LEISURE < 0, 0, COALESCE(LEISURE, 0)) 

Если LEISURE является отрицательным, то выше IIF будет вычисляться 0, в противном случае, если LEISURE является NULL, COALESCE возвращается 0 снова, в противном случае положительное значение возвращается.

3

Инструкция CASE - лучший способ сделать это. Вы можете сделать это с одним сравнения:

SELECT (CASE WHEN b.leisure > 0 THEN b.leisure ELSE 0 END) 

NULL сравнение не вычисляется верно, когда по сравнению с 0, поэтому явное Сравнения NULL не является строго необходимым.

 Смежные вопросы

  • Нет связанных вопросов^_^