如何使用介于和或之间的sql case表达式?

wswtfjt7  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(425)

我试着用一个case表达式来计算-.49和-.01之间或.50和.01之间的总支出。
以下是我尝试过的:

CASE WHEN IsNull(FYExpend.TotalExpenditures,0) Between -.49 AND -.01
          OR IsNull(FYExpend.TotalExpenditures,0) Between .50 AND .01
     THEN 'True' ELSE 'False' END AS 'IsImmaterial'

第二部分计算不正确,因为我有许多介于.50和.01之间的记录返回为false。根据我读到的所有内容,这个语法应该是有效的。我在这里没有发现任何关于在和之间或在同一语句中使用的问题。如果有相关问题,请告诉我。
有人知道为什么这样不行吗?

mftmpeh8

mftmpeh81#

第二个条件的间隔值方向错误:

CASE 
    WHEN FYExpend.TotalExpenditures,0 Between -0.49 AND -0.01
    OR IsNull(FYExpend.TotalExpenditures,0) Between 0.01 AND 0.50
 THEN 'True' ELSE 'False' END AS IsImmaterial

笔记:
你不需要 ISNULL ,自 0 不属于任何寻求的间隔
列别名不应用单引号括起来

xfb7svmp

xfb7svmp2#

使用简单的布尔逻辑:

(case when FYExpend.TotalExpenditures between -0.49 and -0.01 or
           FYExpend.TotalExpenditures,0) Between 0.01 and 0.50 
      then 'True' ELSE 'False'
 end) as IsImmaterial

这个 NULL 价值观在这个逻辑和你的逻辑中都是“错误的”。

相关问题