SQL Server - DTS - mehrere SQL Befehle

Registriert
Mai 2003
Beiträge
132
sers,

ich benutz hier den SQL 2005 von MS. hab im DTS nun ein paket geschrieben, dass mir daten aus ner txt inne sql tabelle schreibt.

nun soll er aus einigen spalten nen differenzwert errechnen und inne andere spalte der selben tabelle eintragen. wie gesnau mache ich das ?

SELECT spalte1 + spalte2 AS spalte3 schon klar. aber wie weiter ? das ist ja nur ein befehl, ich muss da ja auch n update fahren damit ers einträgt oder nich ?


kleine frage nebenbei, muss auch die diffrenz in prozent ausrechnen, wie schreib ich denn bloß sowas innen query ?
 
Also Differenz ist für mich Spalte1 - Spalte2 as Spalte 3

Müsste eigentlich so gehen. Wozu braucht man bei einer Differenz einen Prozentwert?!

Oder habe ich das jetzt falsch verstanden?
 
ajo die hauptrechnung ist

spalte 1 - (spalte2 + spalte3)


ergebnis in spalte 4.

sieht bei mir momentan so aus

SELECT spalte1 - (spalte2 + spalte3) AS spalte4
FROM tabelle

aber so trägt er es ja nicht ein.



einmal soll die differenz als zahl da stehen und dann noch n prozentwert. das ist momentan aber eher unwichtig. wichtig ist erstmal das ergebnis eintragen. nur wie
 
Also meiner Ansicht müstest du dafür eine gespeicherte Prozedur erzeugen. Dort hättest du di Möglichkeit die gesamte Tabelle einzulesen und dann zeilen weise deine Änderungen zu machen. Kenne das allerdings nur vom SQL Server 2000 her und bin mir daher nicht sicher ob dies auch im SQL 2005 möglich ist (Sollte es aber wäre sonst ein Rückschritt, aber das weiß man bei M$ ja nicht unbedingt)

Das ganze müsste beim SQL Server 2000 in etwa so aussehen

Create PROCEDURE Differenz
AS
BEGIN
declare @id as varchar(250)
declare @spalte1 as varchar(250)
declare @spalte2 as varchar(250)
Declare wert_cursor cursor
FOR
Select id, spalte1, spalte2, spalte3 from tabelle
OPEN wert_cursor
FETCH NEXT FROM wert_cursor
INTO @id, @spalte1, @spalte2
WHILE @@FETCH_STATUS = 0
Begin
Update tabelle set spalte3 = @spalte1 – @spalte2 where id = @id
FETCH NEXT FROM wert_cursor
INTO @id, @spalte1, @spalte2
end
END
CLOSE wert_cursor
DEALLOCATE wert_cursor


Ist halt jetzt nur für die Differenz und für SQL 2000, sollte aber auch im SQL Server 2005 noch funktionieren.

EDIT: kann natürlich sein, dass ich mich jetzt auch etwas vertippt habe oder ein paar ANführungszeichen bei den Variablen vergessen habe.
 
hab festgestellt dass es auch ohne SP geht.

Code:
Update Tabelle1 SET spalte4 = spalte 1 - (spalte2 + spalte3)

folgendes errechnet mir den wert

sprich die differenz von spalte1 und spalte2+spalte3

nur wie errechne ich nu da die differenz als prozentwert ? ne zahl habsch ja, aber prozent ? :freak:
 
würde sagen:

100 - ((100 / spalte1) * (spalte2 + spalte3))
 
jo tuts, danke sehr :)
 
Zurück
Oben