Top-Themen

Aktuelle Themen (A bis Z)

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

MSSQL Daten aus Zeilen in Spalten ausgeben

Frage Entwicklung Datenbanken

Mitglied: joni2000de

joni2000de (Level 1) - Jetzt verbinden

13.12.2011, aktualisiert 12:26 Uhr, 7659 Aufrufe, 3 Kommentare

Hi Admins,

ich hoffe ihr könnt mir bei meinem SQL-Problem auf die Sprünge helfen. Folgende Vorgaben:

Tabelle 1 
NR___Bezeichnung 
1___Haus1 
2___Haus2 
3___Haus3 
4___Haus4 
5___Haus5 
 
Tabelle 2 
NR___Funktion___Name 
1___2___Müller 
1___4___Maier 
3___4___Huber 
5___2___Metzler 
5___4___Gruber
Als Ergebnis hätte ich gerne:

NR___Bezeichnung___Funktion2___Funktion4 
1___Haus1___Müller___Maier 
2___Haus2___NULL___NULL 
3___Haus3___NULL___Huber 
4___Haus4___NULL___NULL 
5___Haus5___Metzler___Gruber
Was ich geschafft habe ist, x Varianten zu finden die mir die Zeilen pro Nr nicht zusammenfassen sondern folgendes Ergebnis liefern:
NR___Bezeichnung___Funktion2___Funktion4 
1___Haus1___Müller___NULL 
1___Haus1___NULL___Maier 
2___Haus2___NULL___NULL 
3___Haus3___NULL___NULL 
3___Haus3___NULL___Huber 
4___Haus4___NULL___NULL 
5___Haus5___Metzler___NULL 
5___Haus5___NULL___Gruber
Wie muss hier der Ansatz aussehen? Danke für eure Hilfe.

Gruß Joni
Mitglied: Indrador
13.12.2011 um 10:54 Uhr
Hi,

1. für die Anforderung ist dein Datenmodell mehr als nur suboptimal und generell wirkt es nicht gut überdacht, wirf mal einen Blick auf Artikel über Normalisierung in Datenbanken.
2. Falls die Attributsbezeichnungen tatsächlich so sind, sind sie eine Katastophe, es gibt sehr gute Bücher über Namenskonventionen in Datenbanken.

Folgendes Select deckt deine Anforderung ab, solange es nur eine Funktion nur ein einziges mal je Haus gibt,
wenn es in Haus 2 die Funktion 2 mehrmals geben kann, gibt die Query einen Fehler zurück und das unsinnige Datenmodell wird noch unsinniger.

Select h.Nr,
h.Bezeichnung,
isnull((Select f1.Funktion from Tabelle2 f1 where f1.NR = h.NR and f1.Funktion = 1), 'Keine Funktion') as 'Funktion 1',
isnull((Select f2.Funktion from Tabelle2 f2 where f2.NR = h.NR and f2.Funktion = 2), 'Keine Funktion') as 'Funktion 2',
isnull((Select f3.Funktion from Tabelle2 f3 where f3.NR = h.NR and f3.Funktion = 3), 'Keine Funktion') as 'Funktion 3',
isnull((Select f4.Funktion from Tabelle2 f4 where f4.NR = h.NR and f4.Funktion = 4), 'Keine Funktion') as 'Funktion 4',
isnull((Select f5.Funktion from Tabelle2 f5 where f5.NR = h.NR and f5.Funktion = 5), 'Keine Funktion') as 'Funktion 5'
from Tabelle1 h

Gruß
Bitte warten ..
Mitglied: joni2000de
13.12.2011 um 13:52 Uhr
Hi,

danke für deine Hilfe! Sie hat den nötigen Anstoß gegeben. Ich habe das ganze über left join gelöst.

zu 1. Das Datenmodell kann ich nicht beinflussen.
zu 2. Das war nur die vereinfachte Darstellung die Namen sind schon schön

Gruß Joni
Bitte warten ..
Mitglied: Berrnd
13.12.2011 um 22:44 Uhr
Hi,

der Beitrag ist zwar schon als gelöst markiert, aber ich hatte grad Zeit und Lust damit zu "spielen": ;)
Ist ja fast ein schönes Beispiel, das mittels Pivotisierung gelöst werden kann, hier mal ein Code-Beispiel mit deinen Daten:
01.
select	nr as NR, 
02.
		bezeichnung as Bezeichnung, 
03.
		[1] as Funktion1, 
04.
		[2] as Funktion2, 
05.
		[3] as Funktion3, 
06.
		[4] as Funktion4, 
07.
		[5] as Funktion5, 
08.
		[6] as Funktion6, 
09.
		[7] as Funktion7, 
10.
		[8] as Funktion8, 
11.
		[9] as Funktion9, 
12.
		[10] as Funktion10, 
13.
		[11] as Funktion11, 
14.
		[12] as Funktion12 
15.
from ( 
16.
select tab1.nr, tab1.bezeichnung, tab2.funktion, tab2.name 
17.
from dbo.test2 tab1 
18.
left join dbo.test3 tab2 
19.
	on tab1.nr = tab2.nr) s1 
20.
pivot (max(name) for funktion 
21.
in (	[1], [2], [3], [4], 
22.
		[5], [6], [7], [8], 
23.
		[9], [10], [11], [12])) as pvt 
24.
order by nr
Viele Grüße - Bernd
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Wert aus einer Spalte mit Werten in einer Spalten vergleiche, wenn Wert vorhanden, dann Wert aus der dritten Spalte in der selben Zeile ausgeben, verschiedene Tabellenblätter
gelöst Frage von DevilioMicrosoft Office5 Kommentare

Hallo Zusammen, ich habe folgendes Problem und finde keine Lösung. Ich habe 2 Tabellenblätter mit folgenden Daten: Tabelle 1: ...

Microsoft Office
Excel Nachfrage: Datum aus Spalte ausgeben
Frage von PronMasterMicrosoft Office2 Kommentare

Hallo Zusammen, ich habe folgende Aufgabe bekommen: Wir haben eine Excel in der in einer Spalte das Ablaufdatum von ...

Datenbanken
MS SQL View - Zeile in Spalte
Frage von StfnCstrDatenbanken1 Kommentar

Hallo Zusammen, folgende View habe ich erstellt und folgendes Ergebnis bekommen. Leider brauche ich die Rufnummernart in einer Spalte, ...

Ubuntu
Sed, 4. zeile nach regexp ausgeben
Frage von rsadmchefUbuntu1 Kommentar

Hallo Team, Mein System ist Lubuntu 14.04 LTS Ich benötige ein wenig sed - Hilfe. Meine zu bearbeitende Datei ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 13 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 14 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.