Search code examples
sqlms-accesscrosstabms-access-2016

To build a cross tab query with details


I need to build a crosstab query in ms access but instead of the summarized info, I need to show the details.

I have a table like:

Date Teamname Teammemebername

The cross tab should have:

  • Date as the row heading
  • The team name as the column heading
  • And team member names in the summarize section

How can this be done?

ID  ScheduleDate    TeamCode    TeamMemberCode
5585    3/4/2022    NT      NW
5586    3/4/2022    USHRL   RN
5587    3/4/2022    USHRT   KN
5588    3/4/2022    USHRT   KI
5589    3/4/2022    USHRT   RF
5590    3/11/2022   NT      MF
5591    3/11/2022   USHRL   QD
5592    3/11/2022   USHRT   NW
5593    3/11/2022   USHRT   KN
5594    3/11/2022   USHRT   KI

Solution

  • Incorrect first answer: TRANSFORM First(tblTeamdata.Teammemebername) AS FirstMembername SELECT tblTeamdata.DAT FROM tblTeamdata GROUP BY tblTeamdata.DAT PIVOT tblTeamdata.Teamname;

    Since each cell in the cross tab can have multiple MemberCodes you will have to use a function to return a list of those names. The function shall have date and teamcode as parameters.

    Function names(dat As Variant, team As Variant)
        Dim res$, sql$
        Dim rs As DAO.Recordset
        If IsNull(dat) Or IsNull(team) Then
            names = Null
        Else
            sql = "SELECT * FROM Teamdata"
            sql = sql & " Where ScheduleDate =#" & dat & "#"
            sql = sql & " AND TeamCode=""" & team & """"
            sql = sql & " Order by TeamMemberCode;"
            Set rs = CurrentDb.OpenRecordset(sql)
            Do Until rs.EOF
                If res <> "" Then res = res & ","
                res = res & rs!TeamMemberCode
                rs.MoveNext
            Loop
            rs.Close
            names = res
        End If
    End Function
    

    TRANSFORM names([ScheduleDate],[Teamcode]) AS Result SELECT TeamData.ScheduleDate FROM TeamData GROUP BY TeamData.ScheduleDate PIVOT TeamData.TeamCode;

    The Result of the query with the above dataset will be:

    ScheduleDate  NT    USHRL   USHRT
    2022-03-04    NW    RN      KI,KN,RF
    2022-03-11    MF    QD      KI,KN,NW