Рассчитать SLA между одной и той же рабочей неделей SQL Server - PullRequest
1 голос
/ 30 ноября 2009

У меня есть следующие столбцы в базе данных. AgreedStartDate, ActualStartDate. Мне нужно применить следующую логику: когда AcualStartDate находится в той же рабочей неделе, что и AgreedStartDate, тогда он «внутри» SLA. Если это не так, то это «вне» SLA. Если один из двух столбцов равен NULL, он является «неполным».

Ответы [ 2 ]

2 голосов
/ 30 ноября 2009

Простое утверждение 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
0 голосов
/ 30 ноября 2009

В 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...