SQL Server Query: повторите код t-sql для введенного периода - PullRequest
0 голосов
/ 11 сентября 2018

Я создал следующий код T-SQL для печати некоторых переменных, которые я вычисляю для введенного периода.

Моя цель теперь состоит в том, чтобы напечатать мои вычисленные переменные для каждого дня за указанный период (В противном случае мне нужно повторять мое лечение на каждый день между введенными датами и затем печатать переменные)

Запрос T-SQL:

DECLARE @id INT 
DECLARE @name NVARCHAR(20), @date date, 
        @attemptresult varchar(20), @servername varchar(20)  
DECLARE @getid CURSOR
DECLARE @MAX_RES_MXUI1 INT, @MXUI1 INT, @MAX_RES_MXUI2 INT;
DECLARE @dstartDate DATE, @endDate DATE

SET @dstartDate = '03/04/2018';
SET @endDate = '04/05/2018';


SET @MXUI1 = 0
SET @MAX_RES_MXUI1 = 0
SET @MXUI2 = 0
SET @MAX_RES_MXUI2 = 0

SET @getid = CURSOR FOR
    SELECT 
        maxsessionuid, name,  
        attemptdate, attemptresult, 
        servername
    FROM 
        logintracking 
    WHERE
        attemptresult != 'ECHEC' 
        AND attemptdate BETWEEN @dstartDate AND @endDate 
    ORDER BY
        attemptdate

PRINT('DATE, MAXUI1, MXUI2')

OPEN @getid

FETCH NEXT FROM @getid INTO @id, @name, @date, @attemptresult, @servername

WHILE @@FETCH_STATUS = 0
BEGIN
    -- MXUI1
    IF @attemptresult = 'CONNEXION' and @servername = 'MXUI1'
        SET @MXUI1 = @MXUI1 + 1

    IF @MAX_RES_MXUI1 < @MXUI1
        SET @MAX_RES_MXUI1 = @MXUI1
    ELSE IF (@attemptresult = 'DECONNEXION' OR @attemptresult = 'LOGOUT' OR 
    @attemptresult = 'DELAIDEPASSE') AND @servername = 'MXUI1'
        SET @MXUI1 = @MXUI1 - 1

    -- MXUI2
    IF @attemptresult = 'CONNEXION' AND @servername = 'MXUI2'
        SET @MXUI2 = @MXUI2 + 1

    IF @MAX_RES_MXUI2 < @MXUI2
        SET @MAX_RES_MXUI2 = @MXUI2
    ELSE IF (@attemptresult = 'DECONNEXION' OR @attemptresult = 'LOGOUT' OR 
    @attemptresult = 'DELAIDEPASSE') AND @servername = 'MXUI2'
        SET @MXUI2 = @MXUI2 - 1

    FETCH NEXT FROM @getid INTO @id, @name, @date, @attemptresult, @servername
END

PRINT('NEED TO SHOW EVERYDAY DATE IN THE PERIOD, '+CONVERT(varchar(10),     @MAX_RES_MXUI1)+', '+CONVERT(varchar(10), @MAX_RES_MXUI2))
CLOSE @getid
DEALLOCATE @getid

Результат запроса:

DATE    MAXUI1    MXUI2
---------------------------    
NEED TO SHOW EVERYDAY DATE IN THE PERIOD,11, 15

Желаемый результат:

DATE          MAXUI1    MXUI2
-----------------------------
03-04-2018      11       15
04-04-2018      13       19
05-04-2018      29       15
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...