Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /****** Script for SelectTopNRows command from SSMS ******/
- DECLARE @dt1 DATETIME = '20190703 00:00'
- DECLARE @dt2 DATETIME ='20190704 23:59'
- DECLARE @tm1 DATETIME = '19000101 00:00'
- DECLARE @tm2 DATETIME = '19000101 23:59'
- DECLARE @C_UserStates CURSOR
- DECLARE @TestTable TABLE (UserId uniqueidentifier, [State] int, TimeChange datetime, ICode int);
- DECLARE @FilteredTable TABLE (UserId uniqueidentifier, [State] int, TimeChange datetime, ICode int);
- INSERT INTO @FilteredTable
- SELECT UserId, [State], TimeChange, ICode
- FROM [oktell].[dbo].[A_UserStateHistory]
- where TimeChange between @dt1 and @dt2 and UserId = '9EE34782-68B6-4C6C-819F-CD352D670BCF'
- ORDER BY TimeChange
- SET @C_UserStates = CURSOR SCROLL
- FOR
- SELECT * FROM @FilteredTable
- DECLARE @Count int
- SET @Count =
- (SELECT COUNT(*)
- FROM @FilteredTable)
- DECLARE @Iterator int
- SET @Iterator = 0
- DECLARE @UserId uniqueidentifier
- DECLARE @State int
- DECLARE @TimeChange datetime
- DECLARE @ICode int
- DECLARE @TempCode int
- SET @TempCode = -1
- OPEN @C_UserStates
- WHILE @Iterator != @Count
- BEGIN
- FETCH @C_UserStates INTO @UserId,@State,@TimeChange,@ICode;
- IF @ICode = 0
- INSERT @TestTable VALUES(@UserId,@State,@TimeChange,@ICode)
- ELSE
- BEGIN
- IF @TempCode = 0
- INSERT @TestTable VALUES(@UserId,@State,@TimeChange,@ICode)
- END
- SET @TempCode = @ICode
- SET @Iterator = @Iterator + 1
- END
- CLOSE @C_UserStates
- DECLARE @FinalTable TABLE(UserId uniqueidentifier, [State] int, LenTime float, ICode int)
- DECLARE @C_Half CURSOR
- SET @C_Half = CURSOR SCROLL
- FOR
- SELECT * FROM @TestTable
- SET @Count = (SELECT COUNT(*) FROM @TestTable)
- SET @Iterator = 0
- OPEN @C_Half
- DECLARE @startTime datetime
- DECLARE @endTime datetime
- SET @TempCode = -1
- WHILE @Iterator != @Count
- BEGIN
- FETCH @C_Half INTO @UserId,@State,@TimeChange,@ICode;
- IF @startTime IS NOT NULL AND @TempCode = 0
- BEGIN
- SET @endTime = @TimeChange
- INSERT @FinalTable VALUES(@UserId, @State, datediff(SECOND, @startTime, @endTime), @ICode)
- END
- SET @TempCode = @ICode
- SET @startTime = @TimeChange
- SET @Iterator = @Iterator + 1
- END
- CLOSE @C_Half
- select SUM(LenTime) from @FinalTable
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement