Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. USE [Core]
  2. GO
  3. /****** Object: StoredProcedure [lib].[process_type_1_2] Script Date: 12/18/2017 5:29:30 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9.  
  10.  
  11. -- *****************************************************************
  12. -- Description: This is the function to process 01, 02 relation_code for
  13. -- Tmp_Cust_Relationship by business date
  14. --
  15. --
  16. -- Input Parameters: N/A
  17. --
  18. -- Output Parameters: N/A
  19. --
  20. -- Error Conditions Raised: N/A
  21. --
  22. -- Author: Hant82
  23. --
  24. -- Revision History
  25. -- Date Author Reason for Change
  26. -- ----------------------------------------------------------------
  27. -- 04 Dec 2017 Hant82 Created.
  28. -- *****************************************************************
  29. ALTER PROCEDURE [lib].[process_type_1_2]
  30. (
  31. @d_business_date date
  32. )
  33. AS
  34. BEGIN
  35. DECLARE @v_Type1 VARCHAR(2);
  36. DECLARE @v_Type2 VARCHAR(2);
  37. DECLARE @v_Type13 VARCHAR(2);
  38. DECLARE @v_Type14 VARCHAR(2);
  39.  
  40. SET @v_Type1 = '01'
  41. SET @v_Type2 = '02'
  42. SET @v_Type13 = '13'
  43. SET @v_Type14 = '14'
  44.  
  45. BEGIN TRANSACTION process_data
  46. IF (Object_Id('Tempdb..#tmp_cte2') IS NOT NULL) DROP TABLE #tmp_cte2;
  47. IF (Object_Id('Tempdb..#tmp_cte3') IS NOT NULL) DROP TABLE #tmp_cte3;
  48.  
  49. DECLARE @tmp TABLE (
  50. [child_id] INT,
  51. [parent_id] INT
  52. );
  53. WITH tmp_data
  54. AS (
  55. SELECT iv1.parent_id AS child_id,
  56. NULL AS parent_id
  57. FROM Provision..Cust_Relation iv1
  58. WHERE NOT EXISTS (
  59. SELECT 1
  60. FROM Provision..Cust_Relation
  61. WHERE Child_ID = iv1.parent_id
  62. )
  63. UNION
  64. SELECT child_id,
  65. parent_id
  66. FROM Provision..Cust_Relation
  67. )
  68. INSERT INTO @tmp
  69. SELECT *
  70. FROM tmp_data;
  71.  
  72. WITH cte
  73. AS (
  74. SELECT child_id,
  75. parent_id,
  76. child_id AS group_id,
  77. 1 AS LEVEL
  78. FROM @tmp
  79. WHERE parent_id IS NULL
  80.  
  81. UNION ALL
  82.  
  83. SELECT child.child_id,
  84. child.parent_id,
  85. parent.group_id,
  86. parent.LEVEL + 1 AS LEVEL
  87. FROM @tmp child
  88. INNER JOIN cte parent ON child.parent_id = parent.child_id
  89. )
  90.  
  91. SELECT * INTO #tmp_cte2 FROM cte;
  92.  
  93. SELECT child_id,
  94. parent_id,
  95. -9999 AS group_id
  96. INTO #tmp_cte3
  97. FROM #tmp_cte2
  98. GROUP BY child_id,
  99. parent_id
  100. HAVING count(1) > 1
  101.  
  102. UPDATE tmp2
  103. SET group_id = -9999
  104. FROM #tmp_cte2 tmp2
  105. WHERE EXISTS (
  106. SELECT *
  107. FROM #tmp_cte3 b
  108. WHERE tmp2.child_id = b.child_id
  109. AND b.parent_id = tmp2.parent_id
  110. )
  111.  
  112. INSERT INTO Provision..Tmp_Cust_Relationship
  113. SELECT cr.Cust_Nature_Key,
  114. cr.FK_Cust_ID,
  115. cr.FK_Rel_Cust_ID,
  116. cr.Relationship_Code,
  117. tmp.group_id,
  118. 1,
  119. cr.Business_Date,
  120. cr.Business_Rule_Status
  121. FROM Provision..Tmp_Cust_Relationship cr
  122. INNER JOIN #tmp_cte2 tmp ON cr.FK_Cust_ID = tmp.child_id
  123. AND cr.FK_Rel_Cust_ID = tmp.parent_id
  124. WHERE cr.Relationship_Code IN (@v_Type1, @v_Type13)
  125. AND cr.Business_Date = @d_Business_Date
  126. AND Processed = 0
  127. UNION
  128. SELECT cr.Cust_Nature_Key,
  129. cr.FK_Cust_ID,
  130. cr.FK_Rel_Cust_ID,
  131. cr.Relationship_Code,
  132. tmp.group_id,
  133. 1,
  134. cr.Business_Date,
  135. cr.Business_Rule_Status
  136. FROM Provision..Tmp_Cust_Relationship cr
  137. INNER JOIN #tmp_cte2 tmp ON cr.FK_Cust_ID = tmp.parent_id
  138. AND cr.FK_Rel_Cust_ID = tmp.child_id
  139. WHERE Relationship_Code IN (@v_Type2, @v_Type14)
  140. AND cr.Business_Date = @d_Business_Date
  141. AND Processed = 0
  142.  
  143. IF (Object_Id('Tempdb..#tmp_cte2') IS NOT NULL) DROP TABLE #tmp_cte2;
  144. IF (Object_Id('Tempdb..#tmp_cte3') IS NOT NULL) DROP TABLE #tmp_cte3;
  145.  
  146. DELETE FROM Provision..Tmp_Cust_Relationship WHERE Relationship_Code IN (@v_Type1, @v_Type2, @v_Type13, @v_Type14) AND Processed = 0 AND Business_Date = @d_Business_Date
  147. COMMIT TRANSACTION process_data
  148. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement