Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Access Abfrage (Tabelle transponieren)

Frage Microsoft Microsoft Office

Mitglied: CeMeNt

CeMeNt (Level 2) - Jetzt verbinden

14.10.2009 um 11:44 Uhr, 19458 Aufrufe, 6 Kommentare

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:

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
Mitglied: it-frosch
14.10.2009 um 11:51 Uhr
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.
Bitte warten ..
Mitglied: Biber
14.10.2009 um 12:55 Uhr
Moin CeMeNt,

schematisch ginge es auch so:
01.
SELECT KdNr, 
02.
 max(Feldnr1) as Anrede, 
03.
 max(Feldnr2) as Nachname, 
04.
 max(Feldnr3) as Vorname FROM ( 
05.
SELECT Kundennummer as KdNr, 
06.
 Iif(Feldnummer =1, FeldInfo, Null) as Feldnr1, 
07.
 Iif(Feldnummer =2, FeldInfo, Null) as Feldnr2, 
08.
 Iif(Feldnummer =3, FeldInfo, Null) as Feldnr3 
09.
FROM FremdTab) x 
10.
group by kdnr;
Anzeige dann
01.
KdNr	Anrede	Nachname	Vorname 
02.
1001	Herr	Mayer	Egon 
03.
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
Bitte warten ..
Mitglied: KalleAtWork
14.10.2009 um 13:30 Uhr
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];
Bitte warten ..
Mitglied: CeMeNt
14.10.2009 um 13:39 Uhr
Mahlzeit Leute,

@it-frosch
das ist leider etwas zu krytisch für mich.

@Biber
Die sog. Datenfürsten haben diese Infos vermutlich irgendwann mal auf "Druck des Kunden" nachgelegt.
Ich kann zwar nun weitere Informationen zu den Kunden speichern (natürlich über eine entsprechende GUI)
AAABER: kann diese nicht auswerten! (Prima, oder??)
dann könnten die es auch gleich bleiben lassen...

Also muss ich SQL-Tüffel nun versuchen mir die benötigten Daten irgendwie selber aufzubereiten.
Insgesamt gibt es in der Maske (und der dazugehörigen SQL-Tabelle 30 Felder)

Meine obige Tabelle muss also noch bis Feldnummer "30" erweitert werden.
Und das PRO KUNDE (sind bei uns über 2000)

Sieht mir schon nach Praktikantenpfusch aus, was deine Datenquelle ist...
Das lass ich mal so im Raum stehen...

@Biber und kalle:
ich werde mal versuchen Eure beiden Lösungen nachzuvollziehen.
Ich meld mich dann gleich noch mal.

Danke schon mal,
Gruß CeMeNt
Bitte warten ..
Mitglied: CeMeNt
14.10.2009 um 14:06 Uhr
Da bin ich schon wieder!

Also, KalleAtWork:

ich muß schon sagen: Wirklich klasse!
Genau das wollte ich erreichen!

@Biber
sei met net bös!
Deine Lösung hätte gaaaanz bestimmt auch funktioniert.

Aber die von Kalle sah mir irgendwie einfacher aus, und eben auch auf Anhieb geklappt!

Danke, Leute!
You made my day!

Gruß CeMeNt
Bitte warten ..
Mitglied: Biber
14.10.2009 um 14:23 Uhr
Moin CeMeNt

sei met net bös!
Wieso sollte ich? Das, was ich (zu Fuss) gebastelt habe einspricht ja genau einer Kreuztabellenabfrage
01.
TRANSFORM Max(FremdTab.Feldinfo) AS MaxWertvonFeldinfo 
02.
SELECT FremdTab.Kundennummer 
03.
FROM FremdTab 
04.
GROUP BY FremdTab.Kundennummer 
05.
PIVOT FremdTab.Feldnummer;
Ausgabe:
01.
Kundennummer	1	2	3 
02.
1001	Herr	Mayer	Egon 
03.
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
Access Abfrage Sotieren (2)

Frage von charmeur zum Thema Microsoft Office ...

Batch & Shell
gelöst Powershell Access Abfrage auslesen? (2)

Frage von Druide83 zum Thema Batch & Shell ...

VB for Applications
gelöst Xml-Datei laden bzw. auf Festplatte kopieren und per VBA in eine Access-Tabelle speichern (22)

Frage von machohunk zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...