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
MAX()
函数中的位来自MS Access,我需要将其转换为t-sql。有什么想法吗?
答案 0 :(得分:2)
只需继续应用您的WHEN条件,直到所有可能的测试结束。无论哪个资格赛都是真的,首先获胜。
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
答案 1 :(得分:1)
使用case语句。而不是IIF(A, B, C)
使用case when A then B else C end
。在您的情况下,您没有指定C
。 IIF
会替换0
,因此您需要将其放置。
所以而不是
IIf([tuesday]>0,1)
使用
case when [tuesday] > 0 then 1 else 0 end
也不是使用And
进行按位,而是使用&
。
最后,我不知道代码的目的是什么,但是 看起来它没有这样做 。