PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : stored procedure spalten und werte anfügen


Gast
2012-10-18, 09:37:31
Ich habe 2 Tabellen: Tabelle Ergebnis, Tabelle Detailergebnis
Es soll nun eine neue Tabelle per stored procedure zusammengebaut werden
diese besteht im wesentlichen erst mal aus einer kopie der ergebnis tabelle.

dort werden nun spalten angefügt und mit den entsprechenden detailergebnissen gefüllt (je nachdem wieviele detailergebnisse gefunden werden, normalerweise bis zu 10)
sinn der sache ist die erstellung einer tabelle welche die ergebnisse übersichtlicher darstellt

das sieht etwa folgendermaßen aus:

tabelle ergebnis:
id, part, recordcreated

tabelle detailergebnis:
id, ergebnisid, resultvalue

neue tabelle:
id, part, recordcreated, resultvalue1, resultvalue2, resultvalue3, ...

ich habe die erstellung der neuen tabelle nun etwa so gelöst:
1. tabelle kopieren (mit select into)
2. spalten hinzufügen (je nachdem wieviele benötigt werden)
3. werte in die spalten schreiben

um die werte in die spalten zu schreiben habe ich 2 cursoren verwendet. jedoch habe ich bedenken wegen der performance da es sich um recht viele datensätze in der ergebnis tabelle handelt (bis 1mio) bzw habe ich das gefühl dass die lösung nicht optimal ist

rein schematisch sieht das etwa so aus:

declare cursor1
for select id from ergebnis
declare cursor2
for select ergebnisid, resultvalue from detailergebnis
update...

ich habe mich gefragt ob es möglich ist, die neue tabelle auch geschickt durch eine query zu erstellen (evtl auch mit einer temp tabelle), oder zumindest die werte ohne einen cursor in die neue tabelle zu übertragen.

weiß jemand wie man das machen kann oder wie man das sonst alternativ lösen kann... ich habe das alles schon ne zeit lang nicht mehr gemacht.

Matrix316
2012-10-18, 12:40:26
Müssen die Resultvalues unbedingt als neue Spalten genommen werden? Wenn die Anzahl der Resultvalue irgendwie begrenzt ist, könnte man mit case when oder so die zusammenführen.

Gast
2012-10-18, 13:10:06
Müssen die Resultvalues unbedingt als neue Spalten genommen werden? Wenn die Anzahl der Resultvalue irgendwie begrenzt ist, könnte man mit case when oder so die zusammenführen.
ja und die werte müssen in einzelnen spalten stehen (idr ca. 10 spalten), damit man sie nachher auf der oberfläche auf/absteigend sortieren kann.

xxxgamerxxx
2012-10-18, 15:47:33
Wenn die Werte fest definiert sind, kannst du das z.B. beim MS SQL Server mit der PIVOT Funktion realisieren.

Und dann würde ich dieses PIVOT Statement in eine View bauen und keine neue Tabelle erstellen, sofern das performance technisch OK ist.

Gast
2012-10-18, 19:42:47
... mit der PIVOT Funktion realisieren.
thx das ist genau was ich gesucht habe.