2017-12-29 13 views
-1

Ich habe eine Tabelle wie folgt aussieht:Transformation und Pivot in MS-Access

Field1 Field2  Blank Fail Pass Date 
a   1   0  20  40  170101 
a   2   1  19  99  170101 
b   1   0  54  24  170101 
c   3   1  24  30  170101 
a   1   0  11  19  170102 
b   2   0  21  266  170102 
a   1   2  10  40  170103 
.... 

Der Benutzer kann dann den Bereich Datum wählt sie angezeigt werden sollen, und ich möchte mein Ergebnis so aussehen:

Field1 Field2 0101_B 0101_F 0101_P 0102_B 0102_F 0102_P 0103_B 0103_F 0103_P 
a  1  0  20  40  0  11  19  2  10  40 
a  2  1  19  99 
b  1  0  54  24 
c  3  1  24  30  
b  2        0  21  266 

Jede Hilfe wirklich geschätzt!

+1

MS Access-Abfragen wie jede SQL-Abfrage erzeugen keine solchen hierarchischen Spalten. Betrachten Sie Excel-Pivots, SAS-Tabellen, Python-Pandas usw. – Parfait

+0

Vielen Dank! Ich habe Änderungen am gewünschten Ausgabeformat vorgenommen, das ich haben möchte, und habe es nicht zu hierarchischen Spalten gemacht. Ist das möglich? – Krystalcc

Antwort

0

Optionen:

  1. UNION-Abfrage als Quelle für eine Crosstab - Parameter sollten wirklich Steuerelemente auf einem Formular verweisen.
    PARAMETERS StartDate Long, EndDate Long; TRANSFORM Sum(Q.Data) AS SumOfData SELECT Q.Field1, Q.Field2, Q.Yr FROM (SELECT Field1, Field2, Blank AS Data, "B" AS Source, [Date], Mid([Date],3) & "_B" AS MonDayCat, Int(Left([Date],2)) AS Yr FROM Table1 UNION SELECT Field1, Field2, Pass, "P", [Date], Mid([Date],3) & "_P", Int(Left([Date],2)) AS Yr FROM Table1 UNION SELECT Field1, Field2, Fail, "F", [Date], Mid([Date],3) & "_F", Int(Left([Date],2)) AS Yr FROM Table1) AS Q WHERE (((Q.Date) Between [StartDate] And [EndDate])) GROUP BY Q.Field1, Q.Field2, Q.Yr PIVOT Q.MonDayCat;

  2. drei Crosstab Join-Abfragen dann die Crosstabs

  3. Bewertung http://allenbrowne.com/ser-67.html#MultipleValues

  4. VBA-Prozedur Schreiben Aufzeichnungen zu einem "temp Tabelle

Keine dieser Optionen ermöglichen ein ganzes Jahr an Daten, wenn Daten für jeden Tag vorliegen - höchstens 2,5 Monate. Es ist nicht einfach, einen stabilen Bericht auf CROSSTAB-Basis zu erstellen. Überprüfung http://allenbrowne.com/ser-67.html#ColHead.