Sql server 所有这些都是为了让员工满意,以实际反映你所拥有的。然后,我将添加一个实际的ComplainId,它链接devemployeecomplainindtail表中特定员工投诉的所有记录。一旦你有了这个地方,你可以查询每一个投诉花了多长时间来解决。如果没有这一点

Sql server 所有这些都是为了让员工满意,以实际反映你所拥有的。然后,我将添加一个实际的ComplainId,它链接devemployeecomplainindtail表中特定员工投诉的所有记录。一旦你有了这个地方,你可以查询每一个投诉花了多长时间来解决。如果没有这一点,sql-server,database,Sql Server,Database,所有这些都是为了让员工满意,以实际反映你所拥有的。然后,我将添加一个实际的ComplainId,它链接devemployeecomplainindtail表中特定员工投诉的所有记录。一旦你有了这个地方,你可以查询每一个投诉花了多长时间来解决。如果没有这一点,如果员工有重叠的投诉得到解决,您就不能保证每个投诉都得到正确的时间。您的代码已经在计算时间:datediff(second,@progdate,@resdate)diff。什么不起作用? DevEmployee: EmployeeId Emp


所有这些都是为了让员工满意,以实际反映你所拥有的。然后,我将添加一个实际的ComplainId,它链接devemployeecomplainindtail表中特定员工投诉的所有记录。一旦你有了这个地方,你可以查询每一个投诉花了多长时间来解决。如果没有这一点,如果员工有重叠的投诉得到解决,您就不能保证每个投诉都得到正确的时间。您的代码已经在计算时间:
datediff(second,@progdate,@resdate)diff
。什么不起作用?
DevEmployee:
EmployeeId EmployeeName
1          Alex
2          Samson
3          Harry
4          Ronney
5          Stoinis
6          Joanna
7          Nicole
8          Fergusion
ComplainId Complainstatus
1          Open
2          In Progress
3          On Hold
4          Deferred
5          Escalate
6          Resolved
EmployeeId ComplainId ComplainCreatedDate
1          1          2019-01-18 00:00:00.000
1          2          2019-01-20 10:34:09.000
1          3          2119-01-20 05:14:01.110
2          1          2019-01-10 05:14:01.110
2          2          2019-01-11 08:34:01.000
2          3          2019-01-12 01:05:00.000
2          2          2019-01-13 03:07:20.700
2          4          2019-01-14 11:19:20.110
2          2          2019-01-15 12:09:10.110
2          6          2019-01-16 02:49:01.010
3          1          2019-04-22 10:06:12.100

DECLARE @i INT
DECLARE @j INT
DECLARE @lt INT
DECLARE @OnHold DATETIME
DECLARE @OnDeferred DATETIME
DECLARE @OnOpen DATETIME
DECLARE @OnProgress DATETIME
DECLARE @OnEscalate DATETIME
DECLARE @allcount INT
DECLARE @Employee INT
DECLARE @complain INT
DECLARE @date DATETIME
DECLARE @time INT = 0
DECLARE @resdate DATETIME
DECLARE @progdate DATETIME
DECLARE @Eid INT
DECLARE @diff DECIMAL

SET @i = 1
SET @lt = (
        SELECT COUNT(*)
        FROM (
            SELECT MAX(ComplainCreatedDate) AS ResolveTime
                ,EmployeeId
            FROM DevEmployeeDetail
            WHERE complainId = 6
            GROUP BY EmployeeId
            ) a
        INNER JOIN (
            SELECT MIN(ComplainCreatedDate) AS InProgressTime
                ,EmployeeId
            FROM DevEmployeeDetail
            WHERE complainId = 2
            GROUP BY EmployeeId
            ) b ON a.EmployeeId = b.EmployeeId
        )

WHILE @i <= @lt
BEGIN
    SELECT TOP (@i) @eid = a.EmployeeId
        ,@resdate = a.ResolveTime
        ,@progdate = b.InProgressTime
    FROM (
        SELECT MAX(ComplainCreatedDate) AS ResolveTime
            ,EmployeeId
        FROM DevEmployeeDetail
        WHERE complainId = 6
        GROUP BY EmployeeId
        ) a
    INNER JOIN (
        SELECT MIN(ComplainCreatedDate) AS InProgressTime
            ,EmployeeId
        FROM DevEmployeeDetail
        WHERE complainId = 2
        GROUP BY EmployeeId
        ) b ON a.EmployeeId = b.EmployeeId

    SET @j = 1
    SET @allcount = (
            SELECT count(*)
            FROM DevEmployeeDetail
            WHERE @eid = EmployeeId
                AND ComplainCreatedDate > @progdate
                AND ComplainCreatedDate < @resdate
            )

    WHILE @j <= @allcount
    BEGIN
        SELECT TOP (@j) @Employee = EmployeeId
            ,@complain = complainId
            ,@date = ComplainCreatedDate
        FROM DevEmployeeDetail
        WHERE @eid = EmployeeId
            AND ComplainCreatedDate > @progdate
            AND ComplainCreatedDate < @resdate

        SET @j = @j + 1

        IF @complain = 3
        BEGIN
            SET @OnHold = @date
        END

        IF @complain = 4
        BEGIN
            SET @OnDeferred = @date
        END

        IF @complain = 1
        BEGIN
            SET @OnOpen = @date
        END

        IF @complain = 5
        BEGIN
            SET @OnEscalate = @date
        END

        IF @complain = 2
        BEGIN
            SET @OnProgress = @date
        END

        SELECT @Employee EmployeeId
            ,@progdate InProgressDate
            ,@resdate ResolvedDate
            ,datediff(second, @progdate, @resdate) diff
            ,@complain STATUS
            ,@OnHold OnHold
            ,@OnDeferred OnDeferred
            ,@OnOpen OnOpen
            ,@OnEscalate OnEscalate
            ,@OnProgress OnProgress

        SET @OnDeferred = NULL
        SET @OnHold = NULL
        SET @OnOpen = NULL
        SET @OnProgress = NULL
        SET @OnEscalate = NULL
    END

    SET @i = @i + 1

    SELECT @Eid EmployeeId
        ,@progdate InProgressDate
        ,@resdate ResolvedDate
        ,@complain STATUS
        ,@OnHold OnHold
        ,@OnDeferred OnDeferred
        ,@OnOpen OnOpen
        ,@OnEscalate OnEscalate
        ,@OnProgress OnProgress
END;