Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all articles
Browse latest Browse all 1772

Cursorproblem ohne Cursor lösen

$
0
0

Hi Community,

hier mal ein ganz theoretisches Problem.

Ziel ist, in einer Tabelle eine laufende Summe mitzuspeichern, die Bereits bei der Eingabe der Daten geschrieben wird. (siehe Codebeispiel)

Das klappt auch soweit wunderbar, solange jedesmal lediglich ein Datensatz importiert wird.

Ich wurde im Rahmen einer Schulung darauf angesprochen, konnte natürlich auch Lösungen präsentieren.

1. Das ganze über einen Cursor erledigen

2. Im Nachlauf nochmal über die Tabelle gehen.

Ich suche aber gerne nach eleganteren Lösungen - hat vielleicht jemand eine Idee, wie ich auch mehrere Datensätze direkt beim Import richtig einfügen kann.

Den Code habe ich auf das Wesentliche reduziert, danke für Eure Antworten

Roland

CREATE TABLE [dbo].[tblStamm](
	[st_ID] [int] IDENTITY(1,1) NOT NULL,
	[st_Einzahlung] [float] NOT NULL,
	[st_Bestand] [float] NOT NULL,
 CONSTRAINT [PK_tblSta] PRIMARY KEY CLUSTERED 
(
	[st_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO



CREATE TABLE [dbo].[tblImport](
	[imp_ID] [int] IDENTITY(1,1) NOT NULL,
	[imp_Einzahlung] [float] NOT NULL,
 CONSTRAINT [PK_tblImport] PRIMARY KEY CLUSTERED 
(
	[imp_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

INSERT INTO tblImport
	(
	imp_Einzahlung
	)
VALUES
	(10),(10),(20)
	




INSERT INTO [tblStamm]
	(
	[st_Einzahlung],
	[st_Bestand]
	)
SELECT
	imp_Einzahlung,
	imp_Einzahlung + (SELECT ISNULL(Sum((st_Einzahlung)),0) FROM tblStamm)
FROM
	tblImport
ORDER BY imp_ID


Update tblStamm 
SET st_Bestand = (SELECT SUM(st_Einzahlung) FROM tblStamm s WHERE s.st_ID <= tblStamm.st_ID)


SELECT * FROM tblImport
SELECT * FROM tblStamm

/*
TRUNCATE TABLE tblStamm
TRUNCATE TABLE tblImport
*/

/*
DROP TABLE tblStamm
DROP TABLE tblImport
*/


It's no problem, it's just the syntax


Viewing all articles
Browse latest Browse all 1772

Trending Articles


Pumpe 3/ Kühlmittelpumpe C offen/ elektronischer Fehler


Hoher Ölverbrauch beim 2.0 TDI


Automatik Notentriegelung


Fehler mit der Saugrohrklappe


THERMOSELECT AKTIENGESELLSCHAFT, Vaduz, FL-0001.117.801-8


Best in glass


schlachtfest w639


Ölverlust 1.5 TDCI


Fehler P2297-00 im Schubbetrieb


Beim Lastenausgleich konnte keine gültige Postfachdatenbank gefunden werden....



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>