![]() |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
Ansatz, baut auf meinem vorigen Beitrag auf...
SQL-Code:
Ergebnis:
select
t2.spalte2 ,(select sum(ts.spalte3) from tabelle1 ts where ts.spalte1 < (t1.spalte1) ) as Summe ,t1.spalte3 from tabelle1 t1 left join tabelle2 t2 on (t2.spalte1 = t1.spalte2) where t1.spalte2 = 'Wert1' order by t1.spalte1
Code:
nur das Ergebnis...
Spalte2 Summe Spalte3
1500 <null> 310 1500 310 235 1500 545 310
SQL-Code:
Das Prinzip sollte klar sein, den Rest bekommst du schon hin...
select
t2.spalte2 - (select sum(ts.spalte3) from tabelle1 ts where ts.spalte1 <= t1.spalte1) from tabelle1 t1 left join tabelle2 t2 on (t2.spalte1 = t1.spalte2) where t1.spalte2 = 'Wert1' order by t1.spalte1 |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
für die ganze Tabelle... geht es auch mit einem Statement...
SQL-Code:
immer in Mengen denken :wink:
select
t1.spalte1, t1.spalte2, t1.spalte3, t2.spalte2 - (select sum(ts.spalte3) from tabelle1 ts where (ts.spalte1 <= t1.spalte1) and (ts.spalte2=t1.spalte2)) as spalte4 from tabelle1 t1 left join tabelle2 t2 on (t2.spalte1 = t1.spalte2) order by t1.spalte1 |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
hallo,
@idb ich sehe in deiner Abfrage noch nicht einmal, wo irgendwelche Datensätze aktualisiert werden. Der TE wollte wissen, ob er mit einem SQL Statement, die Daten aktualisieren kann. Ohne es ausprobiert zu haben, würde ich sagen, das dein SQL-Statement auch noch nicht einmal die richtigen Werte liefert. Selbst wenn du dass anschliessend in der DB speichers (insert into select from). Um deine Worte zu benutzen immer erst überhaupt denken :lol: mfg frank |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
Zitat:
:) |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
@frankyboy1974
ich gehe davon aus das Rolf Warnecke durchaus in der Lage ist die Transferleistung zu erbringen aus einer Select-Anweisung ein Update-Statement zu erstellen.
SQL-Code:
Des weiteren ist es anmaßend aus einem Verdacht heraus generell etwas als falsch darzustellen und dann auch noch beleidigende Aussagen zu treffen.
update tabelle1 ut1
set ut1.spalte4 = ( select t2.spalte2 - (select sum(ts.spalte3) from tabelle1 ts where (ts.spalte1 <= t1.spalte1) and (ts.spalte2=t1.spalte2)) from tabelle1 t1 left join tabelle2 t2 on (t2.spalte1 = t1.spalte2) where t1.spalte1 = ut1.spalte1 ) MfG IbP |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
Zitat:
Siehe auch: Zitat:
Aber du wirst schon nen Grund haben :mrgreen: |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
Es haben sich wohl genug Hinweise bzw. Ansätze und Lösungen gesammelt, denke der TE kann das schon sinnvoll umsetzen.
Was das beste ist, kann man anhand seiner bisherigen Angaben hier nicht sagen. Ich vote dennoch blindlings für einen View. |
AW: Tabelle um Spalte erweitern und mit berechneten Werten füllen
Bei einer derartig gestalteten View ist der Aufwand doch O(n^2), oder genau O(n*m), wobei n die Anzahl der Zeilen und m die mittlere/maximale Länge der zu summierenden Abschnitte ist, also doch letztendlich O(n^2)
Wenn ich die Tabelle einlesen und das per Hand mache, wäre der Aufwand dagegen O(n). Wenn ich die Daten also im Speicher benötige, sollte das dann -zumindest theoretisch- schneller gehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz