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