Guest User

Правило поиска дублей: создание правила

a guest
Jul 7th, 2020
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.28 KB | None | 0 0
  1. IF NOT OBJECT_ID('[dbo].[tsp_FindAccountDuplicateByInfTIN]') IS NULL
  2. BEGIN
  3.     DROP PROCEDURE [dbo].[tsp_FindAccountDuplicateByInfTIN];
  4. END;
  5. GO
  6. CREATE PROCEDURE [dbo].[tsp_FindAccountDuplicateByInfTIN] (
  7.     @parsedConfig CreatingObjectInfo READONLY,
  8.     @sysAdminUnit UNIQUEIDENTIFIER,
  9.     @ruleId UNIQUEIDENTIFIER
  10. )
  11. AS
  12. BEGIN
  13.     DECLARE @parsedConfigRowsCount INT = (SELECT COUNT(*) FROM @parsedConfig);
  14.     CREATE TABLE #searchAccount (
  15.         [InfTIN] INT,
  16.         [SortDate] DATETIME
  17.     );
  18.     IF @parsedConfigRowsCount = 0
  19.     BEGIN
  20.         INSERT INTO #searchAccount ([InfTIN], [SortDate])
  21.         SELECT
  22.             [InfTIN],
  23.             MAX([ModifiedOn])
  24.         FROM [Account]
  25.         GROUP BY [InfTIN]
  26.         HAVING COUNT(*) > 1;
  27.     END;
  28.  
  29.     INSERT INTO [AccountDuplicateSearchResult] ([AccountId], [GroupId], [RuleId], [SysAdminUnitId])
  30.     SELECT
  31.         [vr].[Id],
  32.         DENSE_RANK() OVER (ORDER BY [vr].[SortDate] DESC, [vr].[InfTIN]),
  33.         @ruleId RuleId,
  34.         @sysAdminUnit
  35.     FROM (
  36.         SELECT
  37.             [v].[Id],
  38.             [v].[InfTIN],
  39.             [r].[SortDate]
  40.         FROM [Account] [v], #searchAccount r
  41.         WHERE [v].[InfTIN] = [r].[InfTIN]
  42.         GROUP BY [v].[InfTIN], [r].[SortDate], [v].[Id]
  43.     ) [vr];
  44. END;
  45. GO
Add Comment
Please, Sign In to add comment