Hallo zusammen,
ich habe folgendes Problem:
Meine vereinfachte Ausgangstabelle:
Zins Kennung
2,43 K065
2,43 KT
2,52 K45
3 F43
3,33 KT
3,33 F
3,33 ZR10
3,5 K11
3,5 KT
3,5 F27
3,5 ZR
nun will ich folgendes Ergebnis:
2,43 2,52 3 3,33 3,5
K x x x
KT x x x
F x x x
ZR x x
Das heißt, ich frage ab
ist in der ersten Spalte der Zins = 2,43 UND in der zweiten Spalte die Kennung = K*, dann schreibe x sonst " "
Ich steh völlig auf dem schlauch, wenn ich eine wenn-Abfrage in spalten mache?!
Bitte helft mir!
Hallo,
Kreuztabellenabfrage wäre das Stichwort.
Mit den vorliegenden Daten musst Du schon etwas mehr Aufwand betreiben, um an das Ziel zu gelangen. Zuerst benötigst Du eine Abfrage, die den Textteil der Kennung übrig lässt. Weil Access und VBA keine Funktion dafür im Sortiment führt, muss eine eigene Funktion in VBA in einem allgemeinen Modul geschrieben werden. Ich habe diese GetAlphaIdentification getauft.Public Function GetAlphaIdentification(Identification)
Const CLSID_RegExp$ = "{3F4DACA4-160D-11D2-A8E9-00104B365C9F}"
Static re As Object
If re Is Nothing Then
Set re = CreateObject("new:" & CLSID_RegExp)
re.Pattern = "[A-Z]+"
End If
If IsNull(Identification) Then
GetAlphaIdentification = Null
ElseIf re.Test(Identification) = False Then
GetAlphaIdentification = Null
Else
GetAlphaIdentification = re.Execute(Identification)(0)
End If
End Function
Diese Abfrage (ich habe sie qa getauft) liefert dann die Vorstufe für die Hauptabfrage und geht von einem Tabellennamen data aus.SELECT d.zins,
Getalphaidentification( d.kennung ) AS kennung
FROM data AS d;
Hier kommt dann die Lösung in Form einer KreuztabellenabfrageTRANSFORM Iif(First(qa.zins) IS NOT NULL, "x") AS x
SELECT qa.kennung
FROM qa
GROUP BY qa.kennung
PIVOT Format(qa.zins, "fixed");
und diesem Ergebnis:kennung 2,43 2,52 3,00 3,33 3,50
--------------------------------------------
F x x x
K x x x
KT x x x
ZR x x