计算相同工作周SQL Server之间的SLA

时间:2009-11-30 14:50:01

标签: sql-server

我在数据库中有以下列。 AgreedStartDate,ActualStartDate。我需要应用以下逻辑:当AcualStartDate在SAME工作周内作为AgreedStartDate时,它就在SLA的“内部”。如果不是这种情况,则它在SLA之外。如果两列中的任何一列为NULL,那么它就是'不完整'。

2 个答案:

答案 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