Access Tabellenblätter zusammenführen, inkl. Abhängigkeiten
Hallo liebe Schwarmwissen-Administratoren
Lange ists her, nun steh ich mir mal wieder gröber auf dem Schlauch...
Ich habe in Access folgende Tabellen, welche ich zusammenführe:
TRC-Report: generische Auswertung ab einem Telefonsystem. Hier habe ich die am Telefon zugewiesenen, sogenannten TRC.
Tickets: ist eine voraufbereitete Tabelle mit allen Tickets in einem bestimmten Service (gleicher Service wie die Telefone). Hier sind die TRC bereits einer Kategorie zugewiesen.
TRC Formular: Hier sage ich, welche Kategorie hinter einer TRC Nummer steht. Zudem in einer Spalte das Jahr, wo die Assoziierung gütig war (es kann also sein, dass die Nummer 160 im Jahr 2021 zur Kategorie Banane zugewiesen war, und im Jahr 2022 zu der Kategorie Äpfel)
Nun habe ich eine Union Abfrage. Grundsätzlich funktioniert diese. Jedoch hat es im Jahreswechsel eben genau die Doppelspurigkeiten im TRC Formular gegeben. Sprich, dass es eben TRC Nummern geben kann, die in beiden Jahren vorkamen, aber unterschiedliche Kategorien besitzen. Deshalb habe ich eben noch die Spalte mit dem Jahr hinzugefügt, in der ein TRC gültig war.
Im Prinzip müsste ich die Union Abfrage nun so umgestalten, dass diese die Werte in der Spalte Kategorie (eben abgeleitet von der Spalte TRC per Innerjoin) abhängig vom Erfassungsjahr auswählt. Sprich, ist das Erfassungsjahr 2022 dann ist TRC 160 = Äpfel, wenn 2021 dann ist TRC 160 = Bananen
Ich dachte mir, am einfachsten ist es, wenn ich pro Jahr einen Select in die Union Abfrage hinzufüge. Jedoch mache ich da etwas falsch, denn irgendwie will das nicht so wie ich will und ja
z.B. habe ich so eine Zeile, welche für das TRC Jahr 2021 gültig ist, einen TRC hat der aber auf die falsche Kategorie zugeweisen ist, und im Jahr 2022 getippt wurde. Eigentlich möchte ich, dass aufgrund des Jahres die TRC Jahr 2022 Kategorie gewählt wird. Ich raff nicht, wie ich das am gescheitesten umsetze. Im Prinzip müsste ich das ja zusätzlich noch vom Erfassungsdatum abhängig machen.
Ich glaube ich bin verwirrt :o)
Grüsse
Lange ists her, nun steh ich mir mal wieder gröber auf dem Schlauch...
Ich habe in Access folgende Tabellen, welche ich zusammenführe:
TRC-Report: generische Auswertung ab einem Telefonsystem. Hier habe ich die am Telefon zugewiesenen, sogenannten TRC.
Tickets: ist eine voraufbereitete Tabelle mit allen Tickets in einem bestimmten Service (gleicher Service wie die Telefone). Hier sind die TRC bereits einer Kategorie zugewiesen.
TRC Formular: Hier sage ich, welche Kategorie hinter einer TRC Nummer steht. Zudem in einer Spalte das Jahr, wo die Assoziierung gütig war (es kann also sein, dass die Nummer 160 im Jahr 2021 zur Kategorie Banane zugewiesen war, und im Jahr 2022 zu der Kategorie Äpfel)
Nun habe ich eine Union Abfrage. Grundsätzlich funktioniert diese. Jedoch hat es im Jahreswechsel eben genau die Doppelspurigkeiten im TRC Formular gegeben. Sprich, dass es eben TRC Nummern geben kann, die in beiden Jahren vorkamen, aber unterschiedliche Kategorien besitzen. Deshalb habe ich eben noch die Spalte mit dem Jahr hinzugefügt, in der ein TRC gültig war.
Im Prinzip müsste ich die Union Abfrage nun so umgestalten, dass diese die Werte in der Spalte Kategorie (eben abgeleitet von der Spalte TRC per Innerjoin) abhängig vom Erfassungsjahr auswählt. Sprich, ist das Erfassungsjahr 2022 dann ist TRC 160 = Äpfel, wenn 2021 dann ist TRC 160 = Bananen
Ich dachte mir, am einfachsten ist es, wenn ich pro Jahr einen Select in die Union Abfrage hinzufüge. Jedoch mache ich da etwas falsch, denn irgendwie will das nicht so wie ich will und ja
z.B. habe ich so eine Zeile, welche für das TRC Jahr 2021 gültig ist, einen TRC hat der aber auf die falsche Kategorie zugeweisen ist, und im Jahr 2022 getippt wurde. Eigentlich möchte ich, dass aufgrund des Jahres die TRC Jahr 2022 Kategorie gewählt wird. Ich raff nicht, wie ich das am gescheitesten umsetze. Im Prinzip müsste ich das ja zusätzlich noch vom Erfassungsdatum abhängig machen.
SELECT
[TRC-Report].Pilot AS Service,
Format("0", "General Number") AS IncID,
[TRC Formular].[TRC Jahr] AS 'TRC Jahr',
[TRC Formular].Typ AS Typ,
Format([TRC-Report].Transaktionscode, "General Number") AS TRC,
[TRC Formular].Produkt AS Produkt,
[TRC Formular].Kategorie AS Kategorie,
[TRC-Report].[Zahl der Anrufe] AS Steuerzahl,
Format([TRC-Report].[Von Zeitraum], "yyyy.mm.dd") AS Erfassungsdatum
FROM
[TRC Formular]
INNER JOIN [TRC-Report] ON [TRC Formular].[TCNeu] = [TRC-Report].[Transaktionscode]
Where [TRC Formular].[TRC Jahr]='2021';
UNION ALL SELECT
[TRC-Report].Pilot AS Service,
Format("0", "General Number") AS IncID,
[TRC Formular].[TRC Jahr] AS 'TRC Jahr',
[TRC Formular].Typ AS Typ,
Format([TRC-Report].Transaktionscode, "General Number") AS TRC,
[TRC Formular].Produkt AS Produkt,
[TRC Formular].Kategorie AS Kategorie,
[TRC-Report].[Zahl der Anrufe] AS Steuerzahl,
Format([TRC-Report].[Von Zeitraum], "yyyy.mm.dd") AS Erfassungsdatum
FROM
[TRC Formular]
INNER JOIN [TRC-Report] ON [TRC Formular].[TCNeu] = [TRC-Report].[Transaktionscode]
Where [TRC Formular].[TRC Jahr]='2022';
UNION ALL SELECT
[Ky2Help Tickets].Service AS Service,
Format([Ky2Help Tickets].IncID, "General Number") AS IncID,
Year([Ky2Help Tickets].Erfassungsdatum) As 'TRC Jahr',
[Ky2Help Tickets].Typ AS Typ,
Format([Ky2Help Tickets].TRC, "General Number") AS TRC,
[Ky2Help Tickets].Produkt AS Produkt,
[Ky2Help Tickets].Kategorie AS Kategorie,
[Ky2Help Tickets].Steuerzahl AS Steuerzahl,
Format([Ky2Help Tickets].Erfassungsdatum, "yyyy.mm.dd") AS Erfassungsdatum
FROM
[Ky2Help Tickets];
Ich glaube ich bin verwirrt :o)
Grüsse
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2237548741
Url: https://administrator.de/contentid/2237548741
Ausgedruckt am: 18.11.2024 um 01:11 Uhr
9 Kommentare
Neuester Kommentar
Du musst einfach nur deine Join-Condition erweitern, wobei ich jetzt mit Access nicht so firm bin, etwa so:
datepart() ist MSSQL, könnte in Access 1:1 funktionieren. Kann dieser Zeitraum im Report über mehrere Jahre gehen?
INNER JOIN [TRC-Report] ON [TRC Formular].[TCNeu] = [TRC-Report].[Transaktionscode]
AND [TRC Formular].[TRC Jahr] = datepart(year,[TRC-Report].[Von Zeitraum])
Dann bekommst du damit aus jedem Datensatz in TRC-Report das entsprechende Jahr, sollte also funktionieren. Datepart() gibt es auch in Access: https://support.microsoft.com/de-de/office/datepart-funktion-26868a79-55 ...
Hast du den WHERE-Teil auch raus genommen? Also ich dachte an sowas als komplettes Statement, ohne WHERE:
Und nein, das ist nicht das Gleiche wie [TRC Formular].[TRC Jahr]='2022'. Dabei werden zwar nur Datensätze aus TRC Formular geholt die in 2022 liegen aber darauf werden per Join ALLE Datensätze aus TRC Report geholt, solange nur der Transaktionscode stimmt. Also auch die Bananen aus deinem Beispiel die zu 2021 gehören.
SELECT *
FROM
[TRC Formular]
INNER JOIN [TRC-Report] ON [TRC Formular].[TCNeu] = [TRC-Report].[Transaktionscode]
AND [TRC Formular].[TRC Jahr] = datepart(year,[TRC-Report].[Von Zeitraum])
Zitat von @aivilon:
So erhalte ich dann die Parameter Abfrage Input Box
Access scheint als Parameterabfrage eine Klammer mit Text zu verwenden, die ist hier nirgends gegeben. Die muss irgendwo anders her kommen, hast du den Select-Teil durch * ersetzt?FROM
[TRC Formular]
INNER JOIN [TRC-Report] ON [TRC Formular].[TCNeu] = [TRC-Report].[Transaktionscode]
AND [TRC Formular].[TRC Jahr] = datepart(year,[TRC-Report].[Von Zeitraum]);
So erhalte ich dann die Parameter Abfrage Input Box
Du kannst das auch anders schreiben aber das erklärt nicht warum da eine Parameterabfrage kommt:
SELECT * FROM
[TRC Formular]
INNER JOIN [TRC-Report] ON [TRC Formular].[TCNeu] = [TRC-Report].[Transaktionscode]
WHERE [TRC Formular].[TRC Jahr] = datepart(year,[TRC-Report].[Von Zeitraum]);
Ohne das Datenmodell komplett sauber neu aufzusetzen wird es auch bei 2 Abfragen bleiben (denke ich, hab jetzt Teile nur überflogen), aber das sollte auch kein echtes Problem mehr darstellen da hier keine Jahreszahlen hart kodiert oder irgendwelche Eingaben erforderlich sind. Unterabfragen "pro Jahr" wären ganz großer Schmuh in einer DB.
Bitte als gelöst markieren falls damit erledigt.
Bitte als gelöst markieren falls damit erledigt.