Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.42 KB | None | 0 0
  1. CREATE TABLE [dbo].[TargettingReport](
  2. [MLISNPI] [varchar](50) NULL,
  3. [CLIENT_ID1] [varchar](50) NULL,
  4. [Sum of count] [int] NULL
  5. ) ON [PRIMARY]
  6.  
  7. select [MLISNPI],[CLIENT_ID1],MAX([Sum of count])
  8. from [TargettingReport]
  9. group by
  10. [MLISNPI],[CLIENT_ID1]
  11.  
  12. +---------+------------+--------------+
  13. | MLISNPI | CLIENT_ID1 | sum of count |
  14. +---------+------------+--------------+
  15. | 567890 | 214060 | 18 |
  16. | 678901 | 214060 | 58 |
  17. | 789012 | 214060 | 27 |
  18. | 891012 | 214060 | 1 |
  19. | 101112 | 214060 | 23 |
  20. | 003001 | 101596 | 0 |
  21. | 003001 | 101522 | 436 |
  22. | 003001 | 101597 | 0 |
  23. | 003002 | 102165 | 66 |
  24. | 003002 | 100062 | 1 |
  25. | 003002 | 211074 | 1229 |
  26. | 003006 | 102235 | 21 |
  27. | 003014 | 213926 | 5 |
  28. | 003016 | 213143 | 3 |
  29. | 003023 | 213801 | 55 |
  30. | 003023 | 212876 | 44 |
  31. | 003023 | 100218 | 0 |
  32. | 003028 | 211144 | 133 |
  33. | 003041 | 100236 | 346 |
  34. | 003041 | 103164 | 65 |
  35. | 003051 | 213402 | 157 |
  36. | 003058 | 100572 | 28 |
  37. | 003065 | 101632 | 29 |
  38. | 003071 | 213632 | 6 |
  39. | 003072 | 101506 | 4 |
  40. | 003081 | 100087 | 398 |
  41. | 003083 | 214311 | 7 |
  42. | 003117 | 210178 | 203 |
  43. | 003121 | 214008 | 9 |
  44. | 003139 | 102179 | 1635 |
  45. | 003147 | 216022 | 21 |
  46. | 003149 | 211425 | 1 |
  47. | 003186 | 215748 | 1 |
  48. +---------+------------+--------------+
  49.  
  50. ; with numbered as
  51. (
  52. select *,
  53. -- Assign number to each record
  54. -- Numbering is separate for each pair of MLISNPI and CLIENT_ID1
  55. -- Highest [Sum of desc] will get number 1 and so forth
  56. row_number() over (partition by [MLISNPI], [CLIENT_ID1]
  57. order by [Sum of count] desc) rn
  58. from [TargettingReport]
  59. )
  60. select [MLISNPI],
  61. [CLIENT_ID1],
  62. [Sum of count]
  63. from numbered
  64. -- Now one can filter ranks
  65. where rn between 2 and 3
  66.  
  67. ; with numbered as
  68. (
  69. select mlisnpi,
  70. [sum of count],
  71. -- Assign number to each record
  72. -- Numbering is separate for each MLISNPI
  73. -- Highest [Sum of desc] will get number 1 and so forth
  74. row_number() over (partition by [MLISNPI]
  75. order by [Sum of count] desc) rn
  76. from [TargettingReport]
  77. )
  78. select mlisnpi,
  79. [1] Rank1,
  80. [2] Rank2,
  81. [3] Rank3
  82. from numbered
  83. pivot (max([Sum of count]) for rn in ([1], [2], [3])) p
  84.  
  85. ; with numbered as
  86. (
  87. select *,
  88. row_number() over (partition by [MLISNPI]
  89. order by [Sum of count] desc) rn
  90. from [TargettingReport]
  91. ),
  92. unioned as
  93. (
  94. select mlisnpi,
  95. convert(varchar(20), [Sum of count]) value,
  96. rn * 2 rn
  97. from numbered
  98. union all
  99. select mlisnpi,
  100. convert(varchar(20), [Client_ID1]),
  101. rn * 2 - 1
  102. from numbered
  103. )
  104. select mlisnpi,
  105. [1] Client1,
  106. [2] Rank1,
  107. [3] Client2,
  108. [4] Rank2,
  109. [5] Client3,
  110. [6] Rank3
  111. from unioned
  112. pivot (max(value) for rn in ([1], [2], [3], [4], [5], [6])) p
  113.  
  114. select
  115. *
  116. from
  117. (
  118. select
  119. [mlisnpi],
  120. [client_id1],
  121. row_number() over (order by [sum of count] desc) as rownumber
  122. from [targettingreport]
  123. group by
  124. [mlisnpi],
  125. [client_id1],
  126. [sum of count]
  127. ) f
  128. where
  129. rownumber between 2 and 3
  130.  
  131. CREATE VIEW TESTVIEW
  132.  
  133. AS
  134.  
  135. SELECT ABB4.[MLISNPI], ABB4.[CLIENT_ID1], MAX(ABB4.[SUM OF COUNT]) AS NEW3
  136. FROM TARGETTINGREPORT AS ABB4
  137. LEFT JOIN (SELECT ABB2.[MLISNPI], ABB2.[CLIENT_ID1], MAX([SUM OF COUNT]) AS NEW2
  138. FROM TARGETTINGREPORT AS ABB2
  139. LEFT JOIN (SELECT [MLISNPI], [CLIENT_ID1], MAX([SUM OF COUNT]) AS NEW1
  140. FROM TARGETTINGREPORT GROUP BY MLISNPI, [CLIENT_ID1])
  141. AS ABB1 ON ABB1.MLISNPI = ABB2.MLISNPI AND ABB1.NEW1 = ABB2.[SUM OF COUNT] and ABB1.CLIENT_ID1 = ABB2.CLIENT_ID1
  142. WHERE ABB1.MLISNPI IS NULL
  143. GROUP BY ABB2.MLISNPI, ABB2.[CLIENT_ID1])
  144. AS ABB3 ON ABB3.MLISNPI = ABB4.MLISNPI AND ABB3.NEW2 = ABB4.[SUM OF COUNT] AND ABB3.CLIENT_ID1 = ABB4.CLIENT_ID1
  145. LEFT JOIN (SELECT ABB5.[MLISNPI], ABB5.[CLIENT_ID1], MAX([SUM OF COUNT]) AS NEW4
  146. FROM TARGETTINGREPORT AS ABB5
  147. GROUP BY ABB5.MLISNPI, ABB5.[CLIENT_ID1])
  148. AS ABB6 ON ABB6.MLISNPI = ABB4.MLISNPI AND ABB6.NEW4 = ABB4.[SUM OF COUNT] AND ABB6.CLIENT_ID1 = ABB4.CLIENT_ID1
  149. WHERE ABB3.MLISNPI IS NULL AND ABB6.MLISNPI IS NULL
  150. GROUP BY ABB4.MLISNPI, ABB4.[CLIENT_ID1]
  151.  
  152. UNION ALL
  153.  
  154. SELECT ABB2.[MLISNPI], ABB2.[CLIENT_ID1], MAX([SUM OF COUNT]) AS NEW2
  155. FROM TARGETTINGREPORT AS ABB2
  156. LEFT JOIN (SELECT [MLISNPI], [CLIENT_ID1], MAX([SUM OF COUNT]) AS NEW1
  157. FROM TARGETTINGREPORT GROUP BY MLISNPI, [CLIENT_ID1])
  158. AS ABB1 ON ABB1.MLISNPI = ABB2.MLISNPI AND ABB1.NEW1 = ABB2.[SUM OF COUNT] AND ABB1.CLIENT_ID1 = ABB2.CLIENT_ID1
  159. WHERE ABB1.MLISNPI IS NULL
  160. GROUP BY ABB2.MLISNPI, ABB2.[CLIENT_ID1]
  161.  
  162. UNION ALL
  163.  
  164. SELECT [MLISNPI], [CLIENT_ID1], MAX([SUM OF COUNT]) AS NEW1
  165. FROM TARGETTINGREPORT
  166. GROUP BY MLISNPI, [CLIENT_ID1]
  167.  
  168. CREATE VIEW TESTVIEW2
  169.  
  170. AS
  171.  
  172. SELECT ABB1.MLISNPI, ABB1.CLIENT_ID1, ABB1.NEW3
  173. FROM TESTVIEW AS ABB1
  174. LEFT JOIN (SELECT MLISNPI, CLIENT_ID1, MIN(NEW3) AS VAR1
  175. FROM TESTVIEW
  176. GROUP BY MLISNPI, CLIENT_ID1) AS ABB2
  177. ON ABB2.MLISNPI = ABB1.MLISNPI AND ABB2.CLIENT_ID1 = ABB1.CLIENT_ID1 AND ABB2.VAR1 = ABB1.NEW3
  178. LEFT JOIN (SELECT MLISNPI, CLIENT_ID1, MAX(NEW3) AS VAR2
  179. FROM TESTVIEW
  180. GROUP BY MLISNPI, CLIENT_ID1) AS ABB3
  181. ON ABB3.MLISNPI = ABB1.MLISNPI AND ABB3.CLIENT_ID1 = ABB1.CLIENT_ID1 AND ABB3.VAR2 = ABB1.NEW3
  182. WHERE ABB2.MLISNPI IS NULL AND ABB3.MLISNPI IS NULL
  183.  
  184. SELECT TESTVIEW.MLISNPI, TESTVIEW.CLIENT_ID1, MAX(TESTVIEW.NEW3) AS '1', TESTVIEW2.NEW3 AS '2', MIN(TESTVIEW.NEW3) AS '3'
  185. FROM TESTVIEW
  186. LEFT JOIN TESTVIEW2 ON TESTVIEW2.MLISNPI = TESTVIEW.MLISNPI AND TESTVIEW2.CLIENT_ID1 = TESTVIEW.CLIENT_ID1
  187. GROUP BY TESTVIEW.MLISNPI, TESTVIEW.CLIENT_ID1, TESTVIEW2.NEW3
  188.  
  189. select top 3 [MLISNPI],[CLIENT_ID1], Max([Sum of count]) COUNTS
  190. from [TargettingReport]
  191. group by
  192. [MLISNPI],[CLIENT_ID1]
  193. ORDER by [Sum of count] desc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement