MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 11.03.2019, 13:39   #1
e_j
Neuer Benutzer
Neuer Benutzer
Standard T-SQL : MSSQL 2016 - Laufende Summe je Jahr

Hallo

Ich hab einen SQL Tabelle in welcher tagesbezogen Stückzahlen eingetragen werden

Tabelle: BE

Spalten:
TaSta_Datum | BE_Stk

In dieser Tabelle sind die täglichen Stückzahlen eingetragen. Da sind Daten ab dem 01.01.2016 drin. Nun will ich gerne YTD Spalte einfügen. Diese muss ja am 01.01 jeden Jahres wieder bei 0 beginnen.

Mit dieser Abfrage bekomm ich die Daten des Jahres 2016

Code:

SELECT A.TaSta_Datum, A.BE_Stk,
		(SELECT SUM(B.BE_Stk) 
		FROM dbo.BE AS B
		WHERE B.TaSta_Datum <= A.TaSta_Datum
		AND B.TaSta_Datum Between CONVERT(datetime, '01.01.2016', 104)
				AND CONVERT(datetime, '31.12.2016', 104)) AS YTD
FROM dbo.BE as A
Was muss ich tun, um das Datum in der Between Bedingung dynamisch zu machen? Aktuell wird für das Jahr 2016 die laufende Summe gebildet. Ab dem 01.01.2017 wird der Wert vom 31.12.2016 weiter gelistet.

Danke für eure Hilfe
e_j ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.03.2019, 21:17   #2
e_j
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo

Manchmal sieht man vor lauter Bäumen den Wald nicht mehr

Ich hab die Lösung gefunden. Für die, die es interessiert:
Code:

SELECT A.TaSta_Datum, A.BE_Stk,
     (SELECT SUM(B.BE_Stk) 
       FROM dbo.BE AS B
       WHERE B.TaSta_Datum <= A.TaSta_Datum
	  AND YEAR(B.TaSta_Datum) = YEAR(A.TaSta_Datum)
	  AND B.TaSta_Datum Between CONVERT(datetime, DATEFROMPARTS ( YEAR(A.TaSta_Datum), 1, 1 ), 104)
	  AND CONVERT(datetime, DATEFROMPARTS ( YEAR(A.TaSta_Datum), 12, 31 ), 104)) AS YTD
FROM dbo.BE as A
Danke an alle, die sich Gedanken gemacht haben
e_j ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.03.2019, 16:36   #3
Josef P.
MOF Guru
MOF Guru
Standard

Hallo!

Mit dem 2016er kannst du die Over-Anweisung ausprobieren:
Code:

select
	A.TaSta_Datum
	, Sum(A.BE_Stk) OVER (partition by Year(A.TaSta_Datum), Month(A.TaSta_Datum) Order by A.TaSta_Datum) as JahrMonat_laufendeSummeProTag
	, Sum(A.BE_Stk) OVER (partition by Year(A.TaSta_Datum), Month(A.TaSta_Datum)) as JahrMonat_Gesamt
	, Sum(A.BE_Stk) OVER (partition by Year(A.TaSta_Datum) Order by A.TaSta_Datum) as Jahr_laufendeSummeProTag
	, Sum(A.BE_Stk) OVER (partition by Year(A.TaSta_Datum)) as Jahr_gesamt
FROM
       dbo.BE as A
mfg
Josef
Josef P. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 16:23   #4
e_j
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Josef

das sieht wesentlich einfacher aus - vielen Dank

Ich muss mich in dem Fall in die OVER-Anweisung einlesen. Abschreiben und staunen ist das eine - verstehen was anderes!

Die Beispiele die du reingestellt hast verstehe ich so plus minus. Ich muss noch den Wert des Vorjahrs zu heute ausgeben (am 14.03.2019 also die laufende Summe des Jahres 2018 bis zum 14.03.2018 anzeigen) plus zudem in Bezug zum Datum die Summe der letzten 28 Tage. Das wir dann meine Challenge werden ;-)

Geändert von e_j (14.03.2019 um 16:42 Uhr).
e_j ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.