Hallo,
ich habe eine Tabelle mit folgendem Aufbau:
AUFTRAG, START_TAG, ENDE_TAG, PRO_WOCHE
ABC, 2018-05-07, 2018-09-07, 38699,19
DEF, 2018-03-05, 2018-04-27, 3215,15
XYZ, 2018-07-23, 2018-11-09, 11315,35
Da ist der Auftrag, ein Starttag, ein Endtag und der Geldwert, der Pro Woche zwischen Starttag und Endtag anfällt.
Jetzt will ich eine Abfrage machen, die mir pro Woche in dem Zeitraum zwischen Starttag und Endtag eine neue Zeile erstellt.
Ich überprüfe den Starttag, ob er kleiner gleich dem Endtag ist und erhöhe den Starttag immer um eine Woche und vergleiche dann wieder.
Solange der Starttag nach den Erhöhungen kleiner als der Endtag ist, wird eine neue Zeile pro Woche erstellt.
Bsp:
AUFTRAG, DATUM, PRO_WOCHE
ABC, 2018-05-07, 38699, 19
ABC, 2018-05-14, 38699, 19
ABC, 2018-05-21, 38699, 19
...
ABC, 2018-09-03, 38699, 19
Das habe ich so gemacht:
declare @zaehler int
set @zaehler = 0
while @zaehler <=(selectDATEDIFF(WEEK,START_TAG,ENDE_TAG) from QUELLTABELLE where AUFTRAG ='123')
BEGIN
insert into ZIELTABELLE
select AUFTRAG,DATEADD(WEEK,@zaehler, START_TAG) as DATUM, PRO_WOCHE from QUELLTABELLE where AUFTRAG ='123'
set @zaehler += 1
END
Das funktioniert jetzt für einen Eintrag der obigen Quelltabelle.
Aber ich weiß jetzt nicht, wie ich das auf die ganze Quelltabelle ausbaue, dass für alle Einträge/Zeilen in der Quelltabelle neue Einträge/Zeilen in die Zieltabelle geschrieben werden.
Ich hoffe, ich habe alles verständlich erklärt.
Kann mir da jemand helfen?
ich habe eine Tabelle mit folgendem Aufbau:
AUFTRAG, START_TAG, ENDE_TAG, PRO_WOCHE
ABC, 2018-05-07, 2018-09-07, 38699,19
DEF, 2018-03-05, 2018-04-27, 3215,15
XYZ, 2018-07-23, 2018-11-09, 11315,35
Da ist der Auftrag, ein Starttag, ein Endtag und der Geldwert, der Pro Woche zwischen Starttag und Endtag anfällt.
Jetzt will ich eine Abfrage machen, die mir pro Woche in dem Zeitraum zwischen Starttag und Endtag eine neue Zeile erstellt.
Ich überprüfe den Starttag, ob er kleiner gleich dem Endtag ist und erhöhe den Starttag immer um eine Woche und vergleiche dann wieder.
Solange der Starttag nach den Erhöhungen kleiner als der Endtag ist, wird eine neue Zeile pro Woche erstellt.
Bsp:
AUFTRAG, DATUM, PRO_WOCHE
ABC, 2018-05-07, 38699, 19
ABC, 2018-05-14, 38699, 19
ABC, 2018-05-21, 38699, 19
...
ABC, 2018-09-03, 38699, 19
Das habe ich so gemacht:
declare @zaehler int
set @zaehler = 0
while @zaehler <=(selectDATEDIFF(WEEK,START_TAG,ENDE_TAG) from QUELLTABELLE where AUFTRAG ='123')
BEGIN
insert into ZIELTABELLE
select AUFTRAG,DATEADD(WEEK,@zaehler, START_TAG) as DATUM, PRO_WOCHE from QUELLTABELLE where AUFTRAG ='123'
set @zaehler += 1
END
Das funktioniert jetzt für einen Eintrag der obigen Quelltabelle.
Aber ich weiß jetzt nicht, wie ich das auf die ganze Quelltabelle ausbaue, dass für alle Einträge/Zeilen in der Quelltabelle neue Einträge/Zeilen in die Zieltabelle geschrieben werden.
Ich hoffe, ich habe alles verständlich erklärt.
Kann mir da jemand helfen?