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 / 25450 < prev    next >
Text File  |  2010-06-15  |  2KB  |  65 lines

  1. CREATE PROCEDURE [dbo].[ISA_spTopProtocolsRDL]
  2.     @FromDate datetime,
  3.     @ToDate datetime,
  4.     @ReportType varchar(10),
  5.     @TopCount int
  6. AS
  7. BEGIN
  8.     DECLARE @SummTableName varchar(100)
  9.     SET @SummTableName = dbo.fnGetSummaryTableName('tblProtocolSummary', @FromDate, @ToDate, @ReportType)
  10.     CREATE TABLE #Table1
  11.     (
  12.         Protocol nvarchar(128),
  13.         Requests bigint
  14.     );
  15.     IF OBJECT_ID (@SummTableName, 'u') IS NOT NULL
  16.     BEGIN
  17.         DECLARE @strQuery varchar(8000)
  18.         SET @strQuery =
  19.         'SELECT
  20.             [Protocol] AS Protocol,
  21.             SUM([Requests]) AS Requests
  22.         FROM ' + @SummTableName + '
  23.         WHERE
  24.             ([date] >= ' + QUOTENAME(CONVERT(varchar, @FromDate, 126),CHAR(39)) + ' AND [date] <= ' + QUOTENAME(CONVERT(varchar, @ToDate, 126),CHAR(39)) + ')
  25.         GROUP BY [Protocol]
  26.         '
  27.         INSERT #Table1
  28.         EXEC(@strQuery)
  29.     END
  30.     DECLARE @AllRequests bigint
  31.     SET @AllRequests = (SELECT SUM(Requests) FROM #Table1);
  32.     IF (@AllRequests =0)
  33.         SET @AllRequests = 1
  34.     CREATE TABLE #Table2
  35.     (
  36.         Protocol nvarchar(128),
  37.         Requests bigint
  38.     );
  39.     INSERT INTO #Table2
  40.     SELECT
  41.         Protocol,
  42.         SUM(Requests) AS Requests
  43.     FROM #Table1
  44.     GROUP BY Protocol
  45.     ORDER BY Requests DESC;
  46.     SELECT TOP(@TopCount)
  47.         Protocol,
  48.         Requests,
  49.         (CAST(Requests AS decimal) / @AllRequests) AS RequestRatio
  50.     FROM #Table2
  51.     WHERE [Protocol] != N'{[23124]}'
  52.     UNION ALL
  53.     SELECT
  54.        N'{[23124]}' As Protocol,
  55.         SUM(Requests),
  56.         (CAST(SUM(Requests) AS decimal) / @AllRequests) AS RequestRatio
  57.     FROM #Table2 t1
  58.     WHERE NOT EXISTS
  59.         (SELECT * FROM
  60.            (SELECT TOP(@TopCount) *
  61.             FROM #Table2
  62.             WHERE [Protocol] != N'{[23124]}') t2
  63.          WHERE t1.Protocol = t2.Protocol)
  64. END
  65.