SQL Datenbank: Inhalt zu Spalten Header machen?

... komplette Frage anzeigen

2 Antworten

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

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Erothh
12.05.2016, 22:21

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.

0

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 bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?