我在数据库中有以下列。 AgreedStartDate,ActualStartDate。我需要应用以下逻辑:当AcualStartDate在SAME工作周内作为AgreedStartDate时,它就在SLA的“内部”。如果不是这种情况,则它在SLA之外。如果两列中的任何一列为NULL,那么它就是'不完整'。
答案 0 :(得分:2)
简单的CASE声明?您不需要使用变量,只需引用列名即可。我只是使用变量来完成一个完整的陈述。
DECLARE @agreedStartDate DATETIME
DECLARE @actualStartDate DATETIME
SET @agreedStartDate = GETDATE()
SET @actualStartDate = GETDATE()
SELECT
CASE
WHEN
@agreedStartDate IS NULL
OR
@actualStartDate IS NULL
THEN
'Incomplete'
WHEN
DATEPART(wk, @agreedStartDate) = DATEPART(wk, @actualStartDate)
AND
DATEPART(yyyy, @agreedStartDate) = DATEPART(yyyy, @actualStartDate)
THEN
'Inside'
ELSE
'Outside'
END
答案 1 :(得分:0)
在SQL Server中,您可以使用CASE语句,如:
select case
when ActualStateDate is null or AgreedStartDate is null then 'Incomplete'
when datepart(wk,ActualStateDate) = datepart(AgreedStartDate) then 'Inside'
else 'Outside'
end as ColumnName
from YourTable