winscheil 0 Geschrieben 23. März 2018 Melden Teilen Geschrieben 23. März 2018 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 ABC, 2018-05-14, 38699 ABC, 2018-05-21, 38699 ... ABC, 2018-09-03, 38699 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? Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 2. Mai 2018 Melden Teilen Geschrieben 2. Mai 2018 Hi Du musst eine äußere schleife für auftrag bauen, dann sollte es auf die ganze quelltabell funktionieren. Vg DerFrank Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.