I need some help writing the MDX for selecting Row members in a particular
query. Here's the background:

The query shows sales results by region and office. The row members should
be like this:

OfficeA
OfficeB
OfficeD
Region1
Region1 (SOC)
OfficeE
OfficeF
OfficeG
OfficeJ
Region2
Region2 (SOC)
World
World (SOC)

There are two things to note about this:

1. The set of offices is being filtered to only show the "active" ones (i.e.
offices which are operational - offices C, H & I have closed down)

2. The Region1, Region2 and World members are straightforward sums of their
(active) children. However, the Region1 (SOC), Region2 (SOC) and World (SOC)
members are calculated - the idea is that they represent a "Same Office
Comparison", in other words only sum the offices that were active both last
year and this year.

The dimensions used to generate the row members are:

1. Region with levels Region and Office
2. Active Office with levels Active (True/False) and SOC (True/False)

This is the MDX I used to generate the members EXCEPT for the "SOC" members:

Member [Region].[World] as
' [Region].[All Region] ' , solve_order = 1

Non Empty
{
Filter(
Hierarchize( Except( [Region].Members , [Region].[All Region] } )
, POST ) ,
[Active Office].[All Active Office].[True] > 0) ,
[Region].[World]
}
ON ROWS

Where I am stuck is generating the "SOC" members and including them in the
set of row members in the correct order. I need to do this without hard
coding any references to specific regions or offices (regions and offices
change over time).

Any ideas?

Many thanks