Sql server 将访问IIF转换为tsql

Sql server 将访问IIF转换为tsql,sql-server,tsql,ms-access,Sql Server,Tsql,Ms Access,MAX()函数中的位来自MS Access,我需要将其转换为t-sql。有什么想法吗?使用案例陈述。不要使用IIF(A,B,C)使用case when A then B else C end。在您的情况下,您没有指定CIIF将替换0,因此您需要将其放入 所以不是 select Project, Max([WeekStart] + (Right(IIf([monday] > 0, 0) AND IIf([tuesday] > 0, 1) AND II

MAX()
函数中的位来自MS Access,我需要将其转换为t-sql。有什么想法吗?

使用案例陈述。不要使用
IIF(A,B,C)
使用
case when A then B else C end
。在您的情况下,您没有指定
C
IIF
将替换
0
,因此您需要将其放入

所以不是

select 
    Project,
    Max([WeekStart] + (Right(IIf([monday] > 0, 0) AND IIf([tuesday] > 0, 1) 
        AND IIf([wednesday] > 0, 2) AND IIf([thursday] > 0, 3) 
        AND IIf([friday] > 0, 4) AND IIf([saturday] > 0, 5) 
        AND IIf([sunday] > 0, 6), 1))) AS LastProjectResourceDate
from 
    ProjectTable t
group by 
    t.Project
使用

另外,不要使用
进行按位和,而是使用
&


最后,我不知道代码打算做什么,但它看起来好像没有做什么,只是继续应用WHEN条件,直到所有可能的测试结束。无论哪个资格赛是正确的,先赢

case when [tuesday] > 0 then 1 else 0 end

你能提供一些样本数据,也许还有一些示例结果吗?使用正确的函数和ANDs会使您很难理解要执行的操作。请注意,SQL Server 2012及更高版本已经有了
case when [tuesday] > 0 then 1 else 0 end
Max( [WeekStart] 
  + CASE when [monday] > 0 then 0
         when [tuesday] > 0 then 1
         when [wednesday] > 0 then 2
         when [thursday] > 0 then 3
         when [friday] > 0 then 4
         when [saturday] > 0 then 5
         when [sunday] > 0 then 6
         else 0 end  LastProjectResourceDate