You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

214 lines
7.6 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[PROC_HIGH_CHART] Script Date: 7/4/2019 11:35:48 AM ******/
  4. DROP PROCEDURE [dbo].[PROC_HIGH_CHART]
  5. GO
  6. /****** Object: StoredProcedure [dbo].[PROC_HIGH_CHART] Script Date: 7/4/2019 11:35:48 AM ******/
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. CREATE PROC [dbo].[PROC_HIGH_CHART]
  12. (
  13. @flag VARCHAR(20) ='high-chart'
  14. ,@country VARCHAR(30) = NULL
  15. ,@User VARCHAR(50)
  16. )
  17. AS
  18. SET NOCOUNT ON;
  19. SET XACT_ABORT ON;
  20. BEGIN
  21. DECLARE @DATE VARCHAR(10),@FirstMonthStart DATE
  22. , @FirstMontEnd DATETIME
  23. , @SecondMonthStart DATE
  24. , @SecondMonthEnd DATETIME
  25. , @ThirdMonthStart DATE
  26. , @ThirdMonthEnd DATETIME
  27. , @FourthdMonthStart DATE
  28. , @FourthMonthEnd DATETIME
  29. , @FifthdMonthStart DATE
  30. , @FifthMonthEnd DATETIME
  31. , @LastMonthStart DATE
  32. , @LastMonthEnd DATETIME
  33. , @todayDate DATETIME
  34. , @previousSixMonthDate Date
  35. IF @flag = 'country'
  36. BEGIN
  37. SELECT @FirstMonthStart = DATEADD(mm,-5,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
  38. SELECT TOP 5 pCountry, count(10) [count]
  39. FROM remittran (NOLOCK)
  40. WHERE approvedDate between @FirstMonthStart and GETDATE()
  41. AND tranStatus <> 'CANCEL'
  42. GROUP BY pcountry
  43. ORDER BY [count] DESC
  44. END
  45. IF @flag = 'high-chart'
  46. BEGIN
  47. IF (SELECT dbo.FNAHasRight(@User,'90100000') )='N'
  48. RETURN
  49. SELECT @todayDate = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))+' 23:59:59'
  50. SELECT @previousSixMonthDate = DATEADD(mm,-5,DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())))
  51. SELECT @FirstMonthStart = DATEADD(mm,-5,DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))
  52. SELECT @SecondMonthStart = DATEADD(mm,1,@FirstMonthStart)
  53. SELECT @ThirdMonthStart = DATEADD(mm,2,@FirstMonthStart)
  54. SELECT @FourthdMonthStart = DATEADD(mm,3,@FirstMonthStart)
  55. SELECT @FifthdMonthStart = DATEADD(mm,4,@FirstMonthStart)
  56. SELECT @LastMonthStart = DATEADD(mm,5,@FirstMonthStart)
  57. SELECT @LastMonthEnd = DATEADD (dd, -1, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0)) +' 23:59:59'
  58. SELECT @FifthMonthEnd = DATEADD(mm,-1,@LastMonthEnd)
  59. SELECT @FourthMonthEnd = DATEADD(mm,-2,@LastMonthEnd)
  60. SELECT @ThirdMonthEnd = DATEADD(mm,-3,@LastMonthEnd)
  61. SELECT @SecondMonthEnd = DATEADD(mm,-4,@LastMonthEnd)
  62. SELECT @FirstMontEnd = DATEADD(mm,-5,@LastMonthEnd)
  63. IF OBJECT_ID('tempdb..#tempRemit') IS NOT NULL DROP TABLE #tempRemit
  64. SELECT approvedDate,pCountry into #tempRemit
  65. FROM remittran(NOLOCK)
  66. where approvedDate between @FirstMonthStart and GETDATE()
  67. AND tranStatus <> 'CANCEL'
  68. IF OBJECT_ID('tempdb..#TEMPCOUNTRY') IS NOT NULL DROP TABLE #TEMPCOUNTRY
  69. SELECT TOP 5 pCountry, count(10) [count] INTO #TEMPCOUNTRY FROM #tempRemit(nolock)
  70. --WHERE approvedDate BETWEEN @FirstMonthStart and GETDATE()
  71. GROUP BY pcountry
  72. ORDER BY [count] DESC
  73. DECLARE @cntCountry INT; SET @cntCountry = 1
  74. WHILE @cntCountry <= 5
  75. BEGIN
  76. SELECT TOP 1 @country = pCountry FROM #TEMPCOUNTRY(nolock)
  77. ORDER BY [count] DESC
  78. DELETE FROM #TEMPCOUNTRY WHERE pCountry = @country
  79. SET @cntCountry = @cntCountry + 1
  80. IF OBJECT_ID('tempdb..#TEMPJAN') IS NOT NULL DROP TABLE #TEMPJAN
  81. IF OBJECT_ID('tempdb..#TEMPFEB') IS NOT NULL DROP TABLE #TEMPFEB
  82. IF OBJECT_ID('tempdb..#TEMPMAR') IS NOT NULL DROP TABLE #TEMPMAR
  83. IF OBJECT_ID('tempdb..#TEMPAPR') IS NOT NULL DROP TABLE #TEMPAPR
  84. IF OBJECT_ID('tempdb..#TEMPMAY') IS NOT NULL DROP TABLE #TEMPMAY
  85. IF OBJECT_ID('tempdb..#TEMPJUNE') IS NOT NULL DROP TABLE #TEMPJUNE
  86. SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPJAN FROM #tempRemit (nolock)
  87. WHERE approvedDate BETWEEN @FirstMonthStart AND @FirstMontEnd
  88. AND pCountry = @country
  89. GROUP BY DAY(approveddate)
  90. ORDER BY [day]
  91. SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPFEB FROM #tempRemit (nolock)
  92. WHERE approvedDate BETWEEN @SecondMonthStart AND @SecondMonthEnd
  93. AND pCountry = @country
  94. GROUP BY DAY(approveddate)
  95. ORDER BY [day]
  96. SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPMAR FROM #tempRemit (nolock)
  97. WHERE approvedDate BETWEEN @ThirdMonthStart AND @ThirdMonthEnd
  98. AND pCountry = @country
  99. GROUP BY DAY(approveddate)
  100. ORDER BY [day]
  101. SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPAPR FROM #tempRemit (nolock)
  102. WHERE approvedDate BETWEEN @FourthdMonthStart AND @FourthMonthEnd
  103. AND pCountry = @country
  104. GROUP BY DAY(approveddate)
  105. ORDER BY [day]
  106. SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPMAY FROM #tempRemit (nolock)
  107. WHERE approvedDate BETWEEN @FifthdMonthStart AND @FifthMonthEnd
  108. AND pCountry = @country
  109. GROUP BY DAY(approveddate)
  110. ORDER BY [day]
  111. SELECT DAY(approveddate) [day], COUNT(1) [count] INTO #TEMPJUNE FROM #tempRemit (nolock)
  112. WHERE approvedDate BETWEEN @LastMonthStart AND @todayDate
  113. AND pCountry = @country
  114. GROUP BY DAY(approveddate)
  115. ORDER BY [day]
  116. DECLARE @HIGHCHART TABLE([DAY] INT, FirstMonth INT, SecondMonth INT, ThirdMonth INT, FourthMonth INT, FifthMonth INT, SixthMonth INT)
  117. DECLARE @cnt INT; SET @cnt = 1
  118. WHILE @cnt <=32
  119. BEGIN
  120. INSERT INTO @HIGHCHART
  121. SELECT @CNT, 0,0,0,0,0,0
  122. SET @cnt = @cnt + 1
  123. END
  124. UPDATE T2 SET T2.FirstMonth = T1.cumulative
  125. FROM (SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
  126. FROM #TEMPJAN t1 (nolock)
  127. INNER JOIN #TEMPJAN t2 (nolock) on t1.[day] >= t2.[day]
  128. GROUP BY t1.[day], t1.[count]
  129. ) T1
  130. INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
  131. UPDATE T2 SET T2.SecondMonth = T1.cumulative
  132. FROM
  133. (SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
  134. FROM #TEMPFEB t1 (nolock)
  135. INNER JOIN #TEMPFEB t2 (nolock) on t1.[day] >= t2.[day]
  136. GROUP BY t1.[day], t1.[count]) T1
  137. INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
  138. UPDATE T2 SET T2.ThirdMonth = T1.cumulative
  139. FROM
  140. (SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
  141. FROM #TEMPMAR t1 (nolock)
  142. INNER JOIN #TEMPMAR t2 (nolock) on t1.[day] >= t2.[day]
  143. GROUP BY t1.[day], t1.[count]) T1
  144. INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
  145. UPDATE T2 SET T2.FourthMonth = T1.cumulative
  146. FROM
  147. (SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
  148. FROM #TEMPAPR t1 (nolock)
  149. INNER JOIN #TEMPAPR t2 (nolock) on t1.[day] >= t2.[day]
  150. GROUP BY t1.[day], t1.[count]) T1
  151. INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
  152. UPDATE T2 SET T2.FifthMonth = T1.cumulative
  153. FROM
  154. (SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
  155. FROM #TEMPMAY t1 (nolock)
  156. INNER JOIN #TEMPMAY t2 (nolock) on t1.[day] >= t2.[day]
  157. GROUP BY t1.[day], t1.[count]) T1
  158. INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
  159. UPDATE T2 SET T2.SixthMonth = T1.cumulative
  160. FROM
  161. (SELECT t1.[day], t1.[count], SUM(ISNULL(t2.[count], 0)) as cumulative
  162. FROM #TEMPJUNE t1 (nolock)
  163. INNER JOIN #TEMPJUNE t2 (nolock) on t1.[day] >= t2.[day]
  164. GROUP BY t1.[day], t1.[count]) T1
  165. INNER JOIN @HIGHCHART T2 ON T2.[DAY] = T1.[day]
  166. SELECT @country countryName
  167. IF OBJECT_ID('tempdb..#tempdata') IS NOT NULL DROP TABLE #tempdata
  168. SELECT * INTO #tempdata FROM @HIGHCHART
  169. DECLARE @sql VARCHAR(max);
  170. SET @sql = 'SELECT [DAY]'
  171. +',FirstMonth AS ' + DATENAME(MONTH,@FirstMonthStart)
  172. +',SecondMonth AS ' + DATENAME(MONTH,@SecondMonthStart)
  173. + ',ThirdMonth AS ' + DATENAME(MONTH,@ThirdMonthEnd)
  174. +',FourthMonth AS ' + DATENAME(MONTH,@FourthdMonthStart)
  175. + ',FifthMonth AS ' + DATENAME(MONTH,@FifthdMonthStart)
  176. +',SixthMonth AS ' + DATENAME(MONTH,@LastMonthStart)
  177. + ' from #tempdata'
  178. --PRINT (@sql)
  179. EXEC (@sql)
  180. SET @cnt = @cnt + 1
  181. DELETE FROM @HIGHCHART
  182. END
  183. END
  184. END
  185. GO