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.

188 lines
13 KiB

1 year ago
  1. USE [FastMoneyPro_Remit]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[proc_RBAStatisticRpt] Script Date: 9/27/2019 1:30:14 PM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. -- exec proc_RBAStatisticRpt @flag='rba-ec'
  9. CREATE PROC [dbo].[proc_RBAStatisticRpt]
  10. (
  11. @flag VARCHAR(10) = NULL
  12. ,@user VARCHAR(50) = NULL
  13. ,@rptdl VARCHAR(50) = NULL
  14. )
  15. AS
  16. SET NOCOUNT ON
  17. SET XACT_ABORT ON
  18. BEGIN TRY
  19. DECLARE
  20. @LOWrFrom MONEY
  21. ,@LOWrTo MONEY
  22. ,@MEDIUMrFrom MONEY
  23. ,@MEDIUMrTo MONEY
  24. ,@HIGHrFrom MONEY
  25. ,@HIGHrTo MONEY
  26. ,@highCount MONEY
  27. ,@mediumCount MONEY
  28. ,@lowCount MONEY
  29. ,@totalCount BIGINT
  30. ,@condition varchar(max)
  31. ,@sql varchar(max)
  32. SELECT @LOWrFrom=rFrom ,@LOWrTo=rTo FROM RBAScoreMaster WHERE TYPE='LOW'
  33. SELECT @MEDIUMrFrom=rFrom ,@MEDIUMrTo=rTo FROM RBAScoreMaster WHERE TYPE='MEDIUM'
  34. SELECT @HIGHrFrom=rFrom ,@HIGHrTo=rTo FROM RBAScoreMaster WHERE TYPE='HIGH'
  35. IF(@flag='rba-s')
  36. BEGIN
  37. SELECT
  38. @highCount = SUM( CASE WHEN RBA BETWEEN @HIGHrFrom AND @HIGHrTo THEN 1 ELSE 0 END )
  39. ,@mediumCount = SUM( CASE WHEN RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo THEN 1 ELSE 0 END )
  40. ,@lowCount = SUM( CASE WHEN RBA BETWEEN @LOWrFrom AND @LOWrTo THEN 1 ELSE 0 END )
  41. ,@totalCount = SUM( CASE WHEN RBA IS NOT NULL THEN 1 ELSE 0 END)
  42. FROM CUSTOMERS WITH (NOLOCK) WHERE RBA IS NOT NULL
  43. SELECT (@highCount/@totalCount)*100 as HIGH, (@mediumCount/@totalCount)*100 as MEDIUM,(@lowCount/@totalCount)*100 as LOW,@totalCount as TOTAL
  44. END
  45. IF(@flag='rba-dl')
  46. BEGIN
  47. --DECLARE @totalCount1 BIGINT
  48. --SELECT @totalCount = SUM(CASE WHEN RBA IS NOT NULL THEN 1 ELSE 0 END) FROM CUSTOMERS WITH (NOLOCK) WHERE RBA IS NOT NULL
  49. --SELECT @totalCount1 = SUM(CASE WHEN RBA IS NOT NULL THEN 1 ELSE 0 END) FROM tranSenders WITH (NOLOCK) WHERE RBA IS NOT NULL
  50. --SELECT country = X.countryName, x.CNT, per = (CAST(X.CNT as money)/@totalCount)*100 FROM(
  51. -- SELECT cm.countryName, [CNT] = COUNT(cm.countryName) FROM CUSTOMERS C WITH (NOLOCK)
  52. -- INNER JOIN countryMaster CM WITH(NOLOCK) ON C.nativeCountry = CM.countryId
  53. -- WHERE RBA IS NOT NULL GROUP BY cm.countryName
  54. -- )X
  55. -- RETURN;
  56. IF @rptdl='HIGH'
  57. BEGIN
  58. -- Native Country Wise --
  59. SELECT
  60. @totalCount = SUM(X.CNT)
  61. FROM(
  62. SELECT cm.countryName, [CNT] = COUNT(cm.countryName) FROM CUSTOMERS C WITH (NOLOCK)
  63. INNER JOIN countryMaster CM WITH(NOLOCK) ON C.nativeCountry = CM.countryId
  64. WHERE RBA BETWEEN @HIGHrFrom AND @HIGHrTo GROUP BY cm.countryName
  65. )X
  66. SELECT
  67. country = X.countryName
  68. ,[percent] = (CAST(X.CNT as money)/@totalCount)*100
  69. FROM(
  70. SELECT cm.countryName, [CNT] = COUNT(cm.countryName) FROM CUSTOMERS C WITH (NOLOCK)
  71. INNER JOIN countryMaster CM WITH(NOLOCK) ON C.nativeCountry = CM.countryId
  72. WHERE RBA BETWEEN @HIGHrFrom AND @HIGHrTo GROUP BY cm.countryName
  73. )X
  74. SELECT
  75. @totalCount = SUM(Y.CNT)
  76. FROM(
  77. SELECT scountry, CNT = count(scountry) FROM remitTran rt WITH(NOLOCK)
  78. INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
  79. WHERE ts.RBA BETWEEN @HIGHrFrom AND @HIGHrTo GROUP BY scountry
  80. )Y
  81. -- Sending Country wise --
  82. SELECT country = Y.scountry, [percent] = (CAST(Y.CNT as money)/@totalCount)*100 FROM (
  83. SELECT scountry, CNT = count(scountry) FROM remitTran rt WITH(NOLOCK)
  84. INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
  85. WHERE ts.RBA BETWEEN @HIGHrFrom AND @HIGHrTo GROUP BY scountry
  86. ) Y
  87. END
  88. ELSE IF @rptdl='MEDIUM'
  89. BEGIN
  90. -- Native Country Wise --
  91. SELECT @totalCount = SUM(X.CNT) FROM(
  92. SELECT cm.countryName, [CNT] = COUNT(cm.countryName) FROM CUSTOMERS C WITH (NOLOCK)
  93. INNER JOIN countryMaster CM WITH(NOLOCK) ON C.nativeCountry = CM.countryId
  94. WHERE RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo GROUP BY cm.countryName
  95. )X
  96. SELECT country = X.countryName, [percent] = (CAST(X.CNT as money)/@totalCount)*100 FROM(
  97. SELECT cm.countryName, [CNT] = COUNT(cm.countryName) FROM CUSTOMERS C WITH (NOLOCK)
  98. INNER JOIN countryMaster CM WITH(NOLOCK) ON C.nativeCountry = CM.countryId
  99. WHERE RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo GROUP BY cm.countryName
  100. )X
  101. -- Sending Country wise --
  102. SELECT @totalCount = SUM(Y.CNT) FROM(
  103. SELECT scountry, CNT = count(scountry) FROM remitTran rt WITH(NOLOCK)
  104. INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
  105. WHERE ts.RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo GROUP BY scountry
  106. ) Y
  107. SELECT country = Y.scountry, [percent] = (CAST(Y.CNT as money)/@totalCount)*100 FROM (
  108. SELECT scountry, CNT = count(scountry) FROM remitTran rt WITH(NOLOCK)
  109. INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
  110. WHERE ts.RBA BETWEEN @MEDIUMrFrom AND @MEDIUMrTo GROUP BY scountry
  111. ) Y
  112. END
  113. ELSE IF @rptdl='LOW'
  114. BEGIN
  115. -- Native Country Wise --
  116. SELECT @totalCount = SUM(X.CNT) FROM(
  117. SELECT cm.countryName, [CNT] = COUNT(cm.countryName) FROM CUSTOMERS C WITH (NOLOCK)
  118. INNER JOIN countryMaster CM WITH(NOLOCK) ON C.nativeCountry = CM.countryId
  119. WHERE RBA BETWEEN @LOWrFrom AND @LOWrTo GROUP BY cm.countryName
  120. )X
  121. SELECT country = X.countryName, [percent] = (CAST(X.CNT as money)/@totalCount)*100 FROM(
  122. SELECT cm.countryName, [CNT] = COUNT(cm.countryName) FROM CUSTOMERS C WITH (NOLOCK)
  123. INNER JOIN countryMaster CM WITH(NOLOCK) ON C.nativeCountry = CM.countryId
  124. WHERE RBA BETWEEN @LOWrFrom AND @LOWrTo GROUP BY cm.countryName
  125. )X
  126. -- Sending Country wise --
  127. SELECT @totalCount = SUM(Y.CNT) FROM(
  128. SELECT scountry, CNT = count(scountry) FROM remitTran rt WITH(NOLOCK)
  129. INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
  130. WHERE ts.RBA BETWEEN @LOWrFrom AND @LOWrTo GROUP BY scountry
  131. ) Y
  132. SELECT country = Y.scountry, [percent] = (CAST(Y.CNT as money)/@totalCount)*100 FROM (
  133. SELECT scountry, CNT = count(scountry) FROM remitTran rt WITH(NOLOCK)
  134. INNER JOIN tranSenders ts WITH(NOLOCK) ON rt.id = ts.tranId
  135. WHERE ts.RBA BETWEEN @LOWrFrom AND @LOWrTo GROUP BY scountry
  136. ) Y
  137. END
  138. END
  139. END TRY
  140. BEGIN CATCH
  141. IF @@TRANCOUNT > 0
  142. ROLLBACK TRANSACTION
  143. DECLARE @errorMessage VARCHAR(MAX)
  144. SET @errorMessage = ERROR_MESSAGE()
  145. EXEC proc_errorHandler 1, @errorMessage, @user
  146. END CATCH
  147. GO