i have a table:
CREATE TABLE [dbo].[TargettingReport](
[MLISNPI] [varchar](50) NULL,
[CLIENT_ID1] [varchar](50) NULL,
[Sum of count] [int] NULL
) ON [PRIMARY]
i am trying to select the 2nd and third highest SUM OF COUNT based on MLISNPI, CLIENT_ID1
this is how i get the max for every unique occurrence of MLISNPI, CLIENT_ID1:
select [MLISNPI],[CLIENT_ID1],MAX([Sum of count])
from [TargettingReport]
group by
[MLISNPI],[CLIENT_ID1]
the question is how do i get the 2nd and 3rd highest?
here’s some example data:
+---------+------------+--------------+
| MLISNPI | CLIENT_ID1 | sum of count |
+---------+------------+--------------+
| 567890 | 214060 | 18 |
| 678901 | 214060 | 58 |
| 789012 | 214060 | 27 |
| 891012 | 214060 | 1 |
| 101112 | 214060 | 23 |
| 003001 | 101596 | 0 |
| 003001 | 101522 | 436 |
| 003001 | 101597 | 0 |
| 003002 | 102165 | 66 |
| 003002 | 100062 | 1 |
| 003002 | 211074 | 1229 |
| 003006 | 102235 | 21 |
| 003014 | 213926 | 5 |
| 003016 | 213143 | 3 |
| 003023 | 213801 | 55 |
| 003023 | 212876 | 44 |
| 003023 | 100218 | 0 |
| 003028 | 211144 | 133 |
| 003041 | 100236 | 346 |
| 003041 | 103164 | 65 |
| 003051 | 213402 | 157 |
| 003058 | 100572 | 28 |
| 003065 | 101632 | 29 |
| 003071 | 213632 | 6 |
| 003072 | 101506 | 4 |
| 003081 | 100087 | 398 |
| 003083 | 214311 | 7 |
| 003117 | 210178 | 203 |
| 003121 | 214008 | 9 |
| 003139 | 102179 | 1635 |
| 003147 | 216022 | 21 |
| 003149 | 211425 | 1 |
| 003186 | 215748 | 1 |
+---------+------------+--------------+
UPDATE: pivoting [Sum of count] around mlisnpi
Sql Fiddle is here.
In case you actually want Cliend_ID1 instead of [Sum of count], just replace all occurrences of [Sum of count] with Client_ID1. Don’t add Client_ID1 to cte because pivot will include it in results and show each combination of mlisnpi and Client_ID1 in its own row.
UPDATE2: pivoting with title included. A bit more verbose, as you need to union all titles (client_id1) and manipulate row numbers to get correct mix of titles and sums. Also you need to convert all to the same data type (varchar here) to be able to use
union all.Sql Fiddle for this is here.