[MS SQL] FIND_IN_SET -> Inhalt einer Spalte als neuen Spaltennamen

Steusi

Nasenbär

Hallo, ich stehe gerade etwas auf dem Schlauch.

Angenommen ich habe folgende Tabelle:

Code:
| User | OrganisationsEinheit | PC
| Hans| OU=Büro1, OU=Domain, OU=Standort1, OU.... | PC1
| Karl  | OU=Büro2, OU=Domain, OU=Standort1, OU.... | PC3

Ich möchte folgende Tabelle erhalten:
Code:
| User | Standort  | Büro | PC
| Hans| Standort1 | Büro1 | PC1
| Karl  | Standort1 | Büro2 | PC3

Nur weiß ich nicht, wie ich dort ran komme, zuerst habe ich mit
SQL:
SUBSTRING(OrganisationsEinheit,4,30) AS Office
angefangen, doch Büronamen sind variable. Einen Befehl strpos wie bei PHP oder INSTR bei MySQL habe ich nicht gefunden, sonst hätte ich nach dem Komma oder Ähnliches gesucht. LOCATE und FIND gingen leider auch nicht :-(

Kann mir jemand einen geistigen Gedankenblitz geben.
Schon mal vielen Dank
 
Zuletzt bearbeitet von einem Moderator:
Also ich hatte erst nur SQL im Titel stehen, es ist so ein doofer IIS-Server. Aber da ich folgendes gelesen hatte zu Substrings:
MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL Server: SUBSTRING()

Und da er SUBSTR() nicht mochte, kann ich MySQL eigentlich ausschließen oder? Gibt es denn noch ein weiteres SQL außer MS SQL?
 
Zuletzt bearbeitet:
Hä? Ist doch dein thread. Also solltest du wissen was für eine DB du da handhaben musst.
Es gibt noch ganz viele andere Datenbanken.
(so auf die Schnelle kannst du mal die Connectionstrings anschauen, dann siehst du die Fülle von Datenbanken (dabei sind dort lang nicht alle )http://www.connectionstrings.com/)
 
SQL Server 2008, hab gerade mit dem Zuständigen gesprochen. Er wollte nur kurz ein paar Abfragen eingerichtet haben und bei einer kam ich ins Stocken.
 
Ok, CHARINDEX nennt sie sich also :)

Somit ist es für das Büro gelöst:
SQL:
SUBSTRING(Benutzer.OU,4, CHARINDEX(',',Benutzer.OU)-4) AS Office

Doch bei dem Standort klappt es so leider nicht, da ich nicht weiß nicht wie ich die Länge zwischen den Kommata angeben kann, zudem finde ich diese Verschachtelung auch nicht optimal, es muss doch noch eine andere Möglichkeit geben oder?

SQL:
SUBSTRING(Benutzer.OU,CHARINDEX(',',Benutzer.OU,CHARINDEX(',',Benutzer.OU)+1)+4, 20) AS Standort

Nur über Umwege geht es, dazu schreibe ich mal die ganze Abfrage zum Verständnis:
SQL:
Select Top 1000000  
Benutzer.Name,
SUBSTRING(Benutzer.ort,0,CHARINDEX(',',Benutzer.ort)) AS Standort,
SUBSTRING(Benutzer.OU,4, CHARINDEX(',',Benutzer.OU)-4) AS Office,
PC.Computer

From (SELECT tblADusers.Name,
			 tblADusers.OU,
			 SUBSTRING(tblADusers.OU,CHARINDEX(',',tblADusers.OU,CHARINDEX(',',tblADusers.OU)+1)+4, 20) AS ort,
			 tblADusers.Username 
	  FROM tblADusers) AS Benutzer
INNER JOIN 
	 (Select tblComputers.Computer,  
			 tblComputers.Username 
	  From tblComputers) AS PC
ON Benutzer.Username = PC.Username 

WHERE Benutzer.Name is NOT NULL
ORDER BY Standort, Office

... schön finde ich es allerdings nicht!
 
Zuletzt bearbeitet von einem Moderator:
Zurück