home *** CD-ROM | disk | FTP | other *** search
/ moodle.waes.ac.uk / moodle.waes.ac.uk.zip / moodle.waes.ac.uk / TMG / SP1-TMG-KB981324-AMD64-ENU.msp / PCW_CAB_SHFx2 / F2143_msfpcui.dll / BINARY / 25178 < prev    next >
Text File  |  2010-06-15  |  3KB  |  84 lines

  1. CREATE PROCEDURE [dbo].[ISA_spTrimArrayDestinationSummary]
  2.     @FromDate datetime,
  3.     @ToDate   datetime
  4. AS
  5. BEGIN
  6.     SET NOCOUNT ON;
  7.     IF OBJECT_ID ('tblDestinationSummary_Daily', 'u') IS NULL
  8.         RETURN
  9.     -- create #table1 empty table copy
  10.     SELECT TOP(0) * INTO #Table1 FROM [tblDestinationSummary_Daily]
  11.     DELETE FROM [tblDestinationSummary_Daily]
  12.     OUTPUT DELETED.* INTO #Table1
  13.     WHERE ([Date] >= @FromDate) AND ([Date] < @ToDate)
  14.     -- 1st aggregate the array
  15.     SELECT
  16.         [DestinationIP],
  17.         SUM([BytesIn]) AS BytesIn,
  18.         SUM([BytesOut]) AS BytesOut,
  19.         SUM([TotalBytes]) AS TotalBytes,
  20.         SUM([Requests]) AS Requests,
  21.         [Date] AS Date
  22.     INTO #TableOrig
  23.     FROM #Table1
  24.     GROUP BY
  25.         [DestinationIP], [Date]
  26.     TRUNCATE TABLE #Table1
  27.     -- now calculate the new TOPs
  28.     DECLARE @SQLString1 nvarchar(2000) =
  29.     'SELECT *
  30.     FROM (
  31.         SELECT
  32.             [DestinationIP], [BytesIn], [BytesOut], [TotalBytes], [Requests], [Date]
  33.         FROM (
  34.             SELECT
  35.                 [DestinationIP], [BytesIn], [BytesOut], [TotalBytes], [Requests], [Date],
  36.                 ROW_NUMBER() OVER (PARTITION BY [Date] ORDER BY '
  37.     DECLARE @SQLString2 nvarchar(2000) =
  38.                     ' DESC) AS rownum
  39.             FROM #TableOrig
  40.             WHERE [DestinationIP] != ''00000000-0000-0000-0000-000000000000'' AND '
  41.     DECLARE @SQLString3 nvarchar(2000) =
  42.             ' > 0 ) t
  43.         WHERE rownum <= 5000
  44.     ) ttt
  45.     WHERE [DestinationIP] IS NOT NULL
  46.           AND NOT EXISTS (SELECT * FROM #Table1
  47.                           WHERE ttt.[DestinationIP] = [DestinationIP] AND
  48.                                 ttt.[Date] = [Date])'
  49.     DECLARE @SQLString nvarchar(4000)
  50.     DECLARE @OrderString nvarchar(200)
  51.     SET @OrderString = '[TotalBytes]'
  52.     SET @SQLString = @SQLString1 + @OrderString + @SQLString2 + @OrderString + @SQLString3;
  53.     PRINT @SQLString
  54.     INSERT INTO #Table1
  55.     EXECUTE(@SQLString)
  56.     SET @OrderString = '[Requests]';
  57.     SET @SQLString = @SQLString1 + @OrderString + @SQLString2 + @OrderString + @SQLString3;
  58.     INSERT INTO #Table1
  59.     EXECUTE(@SQLString)
  60.     SET @OrderString = '[BytesIn]';
  61.     SET @SQLString = @SQLString1 + @OrderString + @SQLString2 + @OrderString + @SQLString3;
  62.     INSERT INTO #Table1
  63.     EXECUTE(@SQLString)
  64.     SET @OrderString = '[BytesOut]';
  65.     SET @SQLString = @SQLString1 + @OrderString + @SQLString2 + @OrderString + @SQLString3;
  66.     INSERT INTO #Table1
  67.     EXECUTE(@SQLString)
  68.     ---- now add tail
  69.     INSERT INTO #TABLE1
  70.     SELECT
  71.         '00000000-0000-0000-0000-000000000000', SUM([BytesIn]), SUM([BytesOut]), SUM([TotalBytes]), SUM([Requests]), [Date]
  72.     FROM #TableOrig ttt
  73.     WHERE
  74.         [Requests] IS NOT NULL AND
  75.         NOT EXISTS (SELECT *
  76.                     FROM #Table1
  77.                     WHERE ttt.[DestinationIP] = [DestinationIP] AND
  78.                           ttt.[Date] = [Date])
  79.     GROUP BY [Date]
  80.     INSERT INTO [tblDestinationSummary_Daily]
  81.     SELECT *
  82.     FROM #TABLE1
  83. END
  84.