Frage von Erothh, 32

SQL Datenbank: Inhalt zu Spalten Header machen?

Hey,

und zwar hab ich eine SQL Datenbank. In dieser hab ich jetzt eine Spalte z.B. TEST in dieser stehen verschiedene Testverfahren, in meinem Beispiel jetzt "MAOP" und in der Spalte danach ein dazugehörigen Wert.

Die Frage ist jetzt wie kann ich umdrehen das der Spalten Header zu "MAOP" wird mit dem dazugehörigen wert darunter.

Soll dann so ausehen:

MAOP

10

20

50

23

234

Antwort
von MschesByte, 13

Hallo,

wenn es dir nur um ein Verfahren geht kannst du einfach folgendes benutzen(T-SQL):

SELECT WERT AS 'MOAP' 
FROM TestDB
WHERE TEST = 'MOAP';

Willst du das aber generalisieren, also ein Skript, dass alle Verfahren auflistet, wird es kompliziert.
Ich habe eine Lösung hinbekommen, diese ist aber nicht sicher, da man davon ausgehen muss, dass die Werte in TEST keine SQL-Sachen enthalten(Bobby DROP TABLES lässt grüßen)!

DECLARE cr_names CURSOR 
FOR SELECT distinct TEST FROM TestDB;

DECLARE @Name varchar(10),
@sqlhead varchar(100),
@sqlFrom varchar(1000),
@ct int = 0;

OPEN cr_names;
FETCH NEXT FROM cr_names INTO @Name;

while @@FETCH_STATUS = 0 begin
if(@ct = 0) BEGIN
SET @sqlhead = 'SELECT a'+CAST(@ct AS varchar(2))+'.' + @Name;
SET @sqlFrom = 'FROM (SELECT ROW_NUMBER() OVER( ORDER BY WERT) AS Num,
WERT AS '+@Name+'
FROM TestDB
WHERE TEST = '''+@Name+''') AS a' + CAST(@ct AS varchar(2))+' ';

END ELSE BEGIN
SET @sqlhead += ', a'+CAST(@ct AS varchar(2))+'.' + @Name;
SET @sqlFrom += '
FULL OUTER JOIN
(SELECT ROW_NUMBER() OVER( ORDER BY WERT) AS Num,
WERT AS '+@Name+'
FROM TestDB
WHERE TEST = '''+@Name+''') AS a' + CAST(@ct AS varchar(2)) + '
ON a'+CAST((@ct-1) AS varchar(2))+'.Num = a'+CAST(@ct AS varchar(2))+'.Num ';
END;


SET @ct += 1;

FETCH NEXT FROM cr_names INTO @Name;
end;

CLOSE cr_names;
DEALLOCATE cr_names;
--print @sqlhead+ '
--' + @sqlFrom;

execute( @sqlhead+ ' ' +@sqlFrom)

Antwort
von maximilianus7, 22

mit sql-mitteln sehe ich keine möglichkeit. ist die sql-anwendung in eine programmiersprache eingebettet? 

Kommentar von Erothh ,

Nein, ich suche mir eigentlich so nur meine Daten raus um sie danach in Excel zu verarbeiten. Statistische Analyse etc.

Also es wäre auch ok wenn es eine andere Möglichkeit gibt, wie z.B. in Excel oder mit einem anderen Programm das realisieren könnte.

Per Hand ist leider keine Option da es immer min. 20.000 Zeilen sind.

Kommentar von maximilianus7 ,

dann exportiere die tabelle in excel und gehe mit VBA dran:

verteile in eine 2. tabelle die WFRT-werte in einer schleife auf verschieden spalten ( MAOP auf spalte 1, ...)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten