Access Abfrage (Tabelle transponieren)
SQL2005, Access2007
Moin Leute,
ich habe mit meinem Access2007 eine Tabelle einer SQL-Datenbank verknüpft.
Nun möchte ich eine bestimmte Abfrage erzeugen, weiß aber nicht wie.
Die Daten in der Tabelle sehen ungefähr so aus:
usw.
nun möchte ich eine Abfrage erstellen, die die Tabelle quasi transponiert:
Weiß aber nicht wie.
Hat jemand wohl eine passende Idee?
Danke schon mal,
Gruß CeMeNt
Moin Leute,
ich habe mit meinem Access2007 eine Tabelle einer SQL-Datenbank verknüpft.
Nun möchte ich eine bestimmte Abfrage erzeugen, weiß aber nicht wie.
Die Daten in der Tabelle sehen ungefähr so aus:
Kundennummer | Feldnummer | Feldinfo |
1001 | 1 | Herr |
1001 | 2 | Mayer |
1001 | 3 | Egon |
2022 | 1 | Frau |
2022 | 2 | Müller |
2022 | 3 | Ließchen |
usw.
nun möchte ich eine Abfrage erstellen, die die Tabelle quasi transponiert:
Kundennummer | Anrede | Nachname | Vorname |
1001 | Herr | Mayer | Egon |
2022 | Frau | Müller | Ließchen |
Weiß aber nicht wie.
Hat jemand wohl eine passende Idee?
Danke schon mal,
Gruß CeMeNt
Please also mark the comments that contributed to the solution of the article
Content-ID: 127088
Url: https://administrator.de/contentid/127088
Printed on: October 9, 2024 at 13:10 o'clock
6 Comments
Latest comment
Hallo CeMeNt,
versuche es mal damit indem du die Tabelle über 3 verschiedene Aliase einbindest.
select a.kundennummer,a.anrede,b.nachname,c.vorname from tabelle a
inner join tabelle b
on a.kundennummer=b.kundennummer where b.feldname=2
inner join tabelle c
on a.kundennummer=c.vorname where c.feldname=3
Nur so als Idee, ist nicht getestet.
versuche es mal damit indem du die Tabelle über 3 verschiedene Aliase einbindest.
select a.kundennummer,a.anrede,b.nachname,c.vorname from tabelle a
inner join tabelle b
on a.kundennummer=b.kundennummer where b.feldname=2
inner join tabelle c
on a.kundennummer=c.vorname where c.feldname=3
Nur so als Idee, ist nicht getestet.
Moin CeMeNt,
schematisch ginge es auch so:
Anzeige dann
..aber richtig begeistern tut das auch nicht.
Wie gehen denn die eigentlichen Datenfürsten dieser merkwürdigen Datenstruktur, also die Applikation, deren SQL-Tabelle du liest, mit dieser Stuktur um?
Oder sind in deren Eingabemasken wirklich beliebig viele FeldNr/Textfeld-Kombinationen erfassbar und die Anwender müssen sich dann einigen, ob der Inhalt des Textfeldes bei einer Feldnummer = 9 nun "Telefon" oder "Sternzeichen" bedeutet??
Sieht mir schon nach Praktikantenpfusch aus, was deine Datenquelle ist...
Grüße
Biber
schematisch ginge es auch so:
SELECT KdNr,
max(Feldnr1) as Anrede,
max(Feldnr2) as Nachname,
max(Feldnr3) as Vorname FROM (
SELECT Kundennummer as KdNr,
Iif(Feldnummer =1, FeldInfo, Null) as Feldnr1,
Iif(Feldnummer =2, FeldInfo, Null) as Feldnr2,
Iif(Feldnummer =3, FeldInfo, Null) as Feldnr3
FROM FremdTab) x
group by kdnr;
KdNr Anrede Nachname Vorname
1001 Herr Mayer Egon
2022 Frau Müller Lieschen
..aber richtig begeistern tut das auch nicht.
Wie gehen denn die eigentlichen Datenfürsten dieser merkwürdigen Datenstruktur, also die Applikation, deren SQL-Tabelle du liest, mit dieser Stuktur um?
Oder sind in deren Eingabemasken wirklich beliebig viele FeldNr/Textfeld-Kombinationen erfassbar und die Anwender müssen sich dann einigen, ob der Inhalt des Textfeldes bei einer Feldnummer = 9 nun "Telefon" oder "Sternzeichen" bedeutet??
Sieht mir schon nach Praktikantenpfusch aus, was deine Datenquelle ist...
Grüße
Biber
Hi,
sowas kann man mit dem Abfrageasistenten und dann Kreutztabellenabfrage erstellen:
Ich habe Deine Daten mal in "Tabelle1" geschrieben. Dann sieht die SQL-Ansicht so aus:
TRANSFORM First(Tabelle1.[Feldinfo]) AS ErsterWertvonFeldinfo
SELECT Tabelle1.[Kundennummer]
FROM Tabelle1
GROUP BY Tabelle1.[Kundennummer]
PIVOT Tabelle1.[Feldnummer];
sowas kann man mit dem Abfrageasistenten und dann Kreutztabellenabfrage erstellen:
Ich habe Deine Daten mal in "Tabelle1" geschrieben. Dann sieht die SQL-Ansicht so aus:
TRANSFORM First(Tabelle1.[Feldinfo]) AS ErsterWertvonFeldinfo
SELECT Tabelle1.[Kundennummer]
FROM Tabelle1
GROUP BY Tabelle1.[Kundennummer]
PIVOT Tabelle1.[Feldnummer];
Moin CeMeNt
Ausgabe:
.. also als Unterschied nur, dass ich als Aggregatfunktion Max() statt First() gewählt und ein paar Spaltenüberschriften dazugemogelt habe.
Gemeint haben KalleAtWork und ich schon das Gleiche, denke ich.
Grüße
Biber
sei met net bös!
Wieso sollte ich? Das, was ich (zu Fuss) gebastelt habe einspricht ja genau einer KreuztabellenabfrageTRANSFORM Max(FremdTab.Feldinfo) AS MaxWertvonFeldinfo
SELECT FremdTab.Kundennummer
FROM FremdTab
GROUP BY FremdTab.Kundennummer
PIVOT FremdTab.Feldnummer;
Kundennummer 1 2 3
1001 Herr Mayer Egon
2022 Frau Müller Lieschen
.. also als Unterschied nur, dass ich als Aggregatfunktion Max() statt First() gewählt und ein paar Spaltenüberschriften dazugemogelt habe.
Gemeint haben KalleAtWork und ich schon das Gleiche, denke ich.
Grüße
Biber