Advertisement
Guest User

Optimize Query

a guest
Oct 1st, 2011
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.50 KB | None | 0 0
  1.  
  2. SELECT  errors.RecordID ,
  3.         errors.errorMessage,
  4.         CASE WHEN PartialSuccess.RecordID IS NOT NULL THEN 1
  5.              ELSE NULL
  6.         END AS Resolved
  7. FROM    ( SELECT    errors.RecordID ,
  8.                     errors.ErrorMessage ,
  9.                     MAX(SyncDate) AS SyncDate
  10.           FROM      dbo.IntegrationLog AS Errors
  11.           WHERE     errors.Success = 0
  12.           GROUP BY errors.RecordID ,
  13.                     errors.ErrorMessage ,
  14.                     errors.ErrorDescription
  15.         ) AS Errors
  16.         LEFT JOIN dbo.IntegrationLog AS FullSuccess ON FullSuccess.RecordID = Errors.RecordID
  17.                                                               AND FullSuccess.Success = 1
  18.                                                               AND FullSuccess.PreviousError = 0
  19.                                                               AND FullSuccess.SyncDate > Errors.SyncDate
  20.         LEFT JOIN ( SELECT  partialSuccess.RecordID
  21.                     FROM    dbo.IntegrationLog AS partialSuccess
  22.                     WHERE   partialSuccess.Success = 1
  23.                     GROUP BY partialSuccess.RecordID
  24.                   ) AS PartialSuccess ON Errors.RecordID = PartialSuccess.RecordID
  25. WHERE   FullSuccess.RecordID IS NULL
  26.  
  27.  
  28.  
  29. SELECT  errors.RecordID ,
  30.         errors.errorMessage,
  31.         CASE WHEN EXISTS ( SELECT  TOP 1 1
  32.                     FROM    dbo.IntegrationLog AS partialSuccess
  33.                     WHERE   partialSuccess.Success = 1 AND Errors.RecordID = partialSuccess.RecordID
  34.                   )  THEN 1
  35.              ELSE NULL
  36.         END AS Resolved
  37. FROM    ( SELECT    errors.RecordID ,
  38.                     errors.ErrorMessage ,
  39.                     MAX(SyncDate) AS SyncDate
  40.           FROM      dbo.IntegrationLog AS Errors
  41.           WHERE     errors.Success = 0
  42.           GROUP BY errors.RecordID ,
  43.                     errors.ErrorMessage ,
  44.                     errors.ErrorDescription
  45.         ) AS Errors
  46.         LEFT JOIN dbo.IntegrationLog AS FullSuccess ON FullSuccess.RecordID = Errors.RecordID
  47.                                                               AND FullSuccess.Success = 1
  48.                                                               AND FullSuccess.PreviousError = 0
  49.                                                               AND FullSuccess.SyncDate > Errors.SyncDate
  50.        
  51. WHERE   FullSuccess.RecordID IS NULL
  52.  
  53.  
  54.  
  55.  
  56. SELECT  errors.RecordID ,
  57.         errors.errorMessage,
  58.         CASE WHEN COUNT(partialSuccess.RecordID ) <> 0 THEN 1
  59.              ELSE NULL
  60.         END AS Resolved
  61. FROM    ( SELECT    errors.RecordID ,
  62.                     errors.ErrorMessage ,
  63.                     MAX(SyncDate) AS SyncDate
  64.           FROM      dbo.IntegrationLog AS Errors
  65.           WHERE     errors.Success = 0
  66.           GROUP BY errors.RecordID ,
  67.                     errors.ErrorMessage ,
  68.                     errors.ErrorDescription
  69.         ) AS Errors
  70.         LEFT JOIN dbo.IntegrationLog AS FullSuccess ON FullSuccess.RecordID = Errors.RecordID
  71.                                                               AND FullSuccess.Success = 1
  72.                                                               AND FullSuccess.PreviousError = 0
  73.                                                               AND FullSuccess.SyncDate > Errors.SyncDate
  74.         LEFT JOIN dbo.IntegrationLog AS partialSuccess
  75.                     ON partialSuccess.Success = 1 AND Errors.RecordID = partialSuccess.RecordID
  76. WHERE   FullSuccess.RecordID IS NULL
  77. GROUP BY errors.recordid, errors.ErrorMessage
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement