Using tsql greater than sign in CASE Expression

前端 未结 6 2191
耶瑟儿~
耶瑟儿~ 2021-01-17 16:02
(case [dbo].[YearsInService]([DateEngaged],getdate())
   when (0) then (0) 
   when (1) then (4) 
   when (2) then (8)
    when (3) then (12)
     when (4) then (32)         


        
6条回答
  •  难免孤独
    2021-01-17 16:25

    You are using a Simple Case statement where logical expressions are not allowed. You need to use a Searched CASE expression. But in your case since you are using a function it will be bit costly to get the return value from the function for each expression.

    Here is MSDN Link for both Simple Case and Searched CASE Syntax

    I would suggest you to use a sub query with a Searched case as bellow.

    select case when results = 0 then 0
                when results = 1 then 4
                ...
                when results >= 10 then 150
                else -1 end as CaseResults
    from (select [dbo].[YearsInService]([DateEngaged],getdate()) results
          from yourTable
         ) Temp
    

提交回复
热议问题