My table looks like this:
+-------+--------+--------+ | Grp | Party | Member | +-------+--------+--------+ | FC | Party1 | Tom | | FC | Party1 | Alice | | FC | Party2 | John | | FC | Party3 | Mary | | GC | Party2 | Anna | | GC | Party4 | Alex | | GC | Party5 | Diana | +-------+--------+--------+
I want to convert a table to a list as follows:
+-------+--------+ | ID | Text | +-------+--------+ | 1 | FC | | 1.1 | Party1 | | 1.1.1 | Tom | | 1.1.2 | Alice | | 1.2 | Party2 | | 1.2.1 | John | | 1.3 | Party3 | | 1.3.1 | Mary | | 2 | GC | | 2.1 | Party2 | | 2.1.1 | Anna | | 2.2 | Party4 | | 2.2.1 | Alex | | 2.3 | Party5 | | 2.3.1 | Diana | +-------+--------+
I tried rollup with row_number , but the result is still far from what I want
;with ctx as ( select * from @test group by rollup(Grp, Party, Member) ) select row_number() over (partition by grp order by grp, party, member) as g, row_number() over (partition by grp, party order by grp, party, member) as p, row_number() over (partition by grp, party, member order by grp, party, member) as m, grp, party, member from ctx where grp is not null order by grp, party, member
Thanks in advance.
EDIT
Here is the SQL to generate the table, hope this helps
declare @test table (Grp varchar(10), Party varchar(10), Member varchar(20)) insert into @test values ('FC', 'Party1', 'Tom') insert into @test values ('FC', 'Party1', 'Alice') insert into @test values ('FC', 'Party2', 'John') insert into @test values ('FC', 'Party3', 'Mary') insert into @test values ('GC', 'Party2', 'Anna') insert into @test values ('GC', 'Party4', 'Alex') insert into @test values ('GC', 'Party5', 'Diana')