Example Table, Turn this
CustID | CustName | SalesRepName | SalesRepSpecialty |
---|---|---|---|
1 | ACME Corp | Steve P | Servers |
1 | ACME Corp | Susy Q | Network |
1 | ACME Corp | John D | Storage |
2 | MicroStuff | Auntie Irma | Network |
3 | O-Rickle | Daddy Larry | Servers |
and turn this into
CustId | CustName | Server | Network | Storage |
---|---|---|---|---|
1 | ACME Corp | Steve P | Suzy Q | John D |
2 | MicroStuff | Auntie Irma | ||
3 | O-Rickle | Daddy Larry |
Is this possible to do in MS Access?
Advertisement
Answer
You can use the Crosstab Query Wizard in Access to create a TRANSFORM statement (Microsoft Access SQL):
TRANSFORM Max(Turn.SalesRepName) AS MaxOfSalesRepName SELECT Turn.CustID, Turn.CustName FROM Turn GROUP BY Turn.CustID, Turn.CustName PIVOT Turn.SalesRepSpecialty;
To get the ordering of the columns right, you can append this clause manually (before the ;
):
IN (Servers, Network, Storage)
This also has the advantage that these columns will be created even when the corresponding SalesRepSpecialty
is missing; however, new values will not automatically be appended. If you create an Access Report based on this query, then you need a fixed set of columns to be able to add a field for them (unless you do some complex dynamic stuff in VBA).