【发布时间】:2013-01-02 10:27:28
【问题描述】:
我有 2 个计算列,[StartTime] 和 [EndTime]
[StartTime] 和 [EndTime] 是通过使用 [Week] 和 [Year] 列的公式计算得出的。
现在我需要另一个计算列,[Status],它是使用前两个计算的。但是当我尝试在[Status] 的公式中使用其中一个时,它给了我一个公式错误
我真的需要它来工作,因为我别无选择。但这有可能吗?
-1 先生,给你:
(case when [IsVOR]=(1) then 'VOR'
when [MarkedAsCompleteOn] IS NULL AND [Year]<datepart(year,getdate()) then 'Overdue'
when [MarkedAsCompleteOn] IS NULL AND [Year]>datepart(year,getdate()) then 'Not Due'
when [MarkedAsCompleteOn] IS NULL AND [Year]=datepart(year,getdate()) AND [Week]<datepart(iso_week,getdate()) then 'Overdue'
when [MarkedAsCompleteOn] IS NULL AND [Year]=datepart(year,getdate()) AND [Week]=datepart(iso_week,getdate()) then 'Due'
when [MarkedAsCompleteOn] IS NULL AND [Year]=datepart(year,getdate()) AND [Week]>datepart(iso_week,getdate()) then 'Not Due'
when [MarkedAsCompleteOn] IS NOT NULL AND [Year]<datepart(year,[MarkedAsCompleteOn]) then 'Late'
when [MarkedAsCompleteOn] IS NOT NULL AND [Year]>datepart(year,[MarkedAsCompleteOn]) then 'Early'
when [MarkedAsCompleteOn] IS NOT NULL AND [Year]=datepart(year,[MarkedAsCompleteOn]) AND [Week]<datepart(iso_week,[MarkedAsCompleteOn]) then 'Late'
when [MarkedAsCompleteOn] IS NOT NULL AND [Year]=datepart(year,[MarkedAsCompleteOn]) AND [Week]=datepart(iso_week,[MarkedAsCompleteOn]) then 'On Time'
when [MarkedAsCompleteOn] IS NOT NULL AND [MarkedAsCompleteOn]<[AllocatedTimeStart] then 'Early' end)
它的最后一部分导致错误:
[MarkedAsCompleteOn]<[AllocatedTimeStart] then 'Early'
而且错误是一般性的:
- Error validating the formula for column 'Status'.
【问题讨论】:
-
-1 表示未发布查询和错误。
-
可能并不理想,但您始终可以根据周和年列计算状态....复制-意大利面...所以是的,有可能...
-
@rene 这就是我目前正在做的,但它会导致准确性问题。例如,12 月 31 日显示为第 53 周,如果我可以使用日期来限制,那就容易多了。
-
12 月 31 日应该显示为哪一周?毕竟一年有超过 52 周。
标签: database sql-server-2008 tsql calculated-columns