2016-12-13 11 views
0

Ich muss eine Kreuztabellenabfrage auf zwei meiner Tabellen anwenden, um gewünschte Ergebnisse zu erhalten. (MS-ACCESS) Zuerst möchte ich lernen, wie man eine Kreuztabellenabfrage auf eine einfache Tabelle schreibt, bevor man zur größeren übergeht.Kreuztabellenabfrage in MS Access

Tabelle 1:

**DATE** |  **NAME** 
------------------------------------- 
13/12/16 | Sofia  
13/12/16 |  Sonia 
13/12/16 |  Jas  
14/12/16 | Sofia 
15/12/16 | Sonia 

Gewünschtes Ergebnis: (P = vorliegt; A = Abwesend)

**Name** | **13/12/16** | **14/12/16** | **15/12/16** 
-------------------------------------------------------- 
Sofia | **P** | **P** | **A** 
Sonia | **P** | **A** | **P** 
Jas | **P** | **A** | **A** 

Antwort

0

Eine Möglichkeit, Kreuztabellen-Abfragen zu nähern ist bedingte Aggregation zu verwenden:

select name, 
     max(iif(date = "13/12/16", "P", "A") as [13/12/16], 
     max(iif(date = "14/12/16", "P", "A") as [14/12/16], 
     max(iif(date = "15/12/16", "P", "A") as [15/12/16] 
from t 
group by name; 

Ich bin nicht sicher, wie die Daten in den Daten dargestellt werden, also nahm ich an, dass sie Strings sind.

+0

Vielen Dank. Was muss ich tun, wenn ich zB für den Monat Dezember 31 Datumsspalten brauche (unabhängig davon, ob sie in der ersten Tabelle vorhanden sind oder nicht) plus eine Namensspalte und die Rowns haben Namen und entweder 'P' oder ' A 'wenn dieses Datum und dieser Name in Tabelle 1 vorhanden sind? –

+0

@SofiaUsman. . . Wiederholen Sie einfach die 'max()' Zeilen für jedes gewünschte Datum. –

+0

Haben wir vergessen, dass MS Access SQL 'Case'-Anweisungen nicht unterstützt? – Parfait