Tabela_1:
[table][tr][td]Activity_Name[/td][td]Jan[/td][td]Feb[/td][td]Mar[/td][td]Apr[/td][td]Mai[/td][td]Jun[/td][td]Jul[/td][td]Aug[/td][td]Sep[/td][td]Oct[/td][td]Nov[/td][td]Dec[/td][/tr][tr][td]Act_1[/td][td]2023-01-11[/td][td]2023-02-11[/td][td]2023-03-11[/td][td]2023-04-11[/td][td]2023-05-11[/td][td]2023-06-11[/td][td]2023-07-11[/td][td]2023-08-11[/td][td]2023-09-11[/td][td]2023-10-11[/td][td]2023-11-11[/td][td]2023-12-11[/td][/tr][tr][td]Act_2[/td][td]2023-01-08[/td][td]2023-02-08[/td][td]2023-03-08[/td][td]2023-04-08[/td][td]2023-05-08[/td][td]2023-06-08[/td][td]2023-07-08[/td][td]2023-08-08[/td][td]2023-09-08[/td][td]2023-10-08[/td][td]2023-11-08[/td][td]2023-12-08[/td][/tr][tr][td]Act_3[/td][td]2023-01-07[/td][td]2023-02-07[/td][td]2023-03-07[/td][td]2023-04-07[/td][td]2023-05-07[/td][td]2023-06-07[/td][td]2023-07-07[/td][td]2023-08-07[/td][td]2023-09-07[/td][td]2023-10-07[/td][td]2023-11-07[/td][td]2023-12-07[/td][/tr][tr][td]Act_4[/td][td]2023-01-07[/td][td]2023-02-07[/td][td]2023-03-07[/td][td]2023-04-07[/td][td]2023-05-07[/td][td]2023-06-07[/td][td]2023-07-07[/td][td]2023-08-07[/td][td]2023-09-07[/td][td]2023-10-07[/td][td]2023-11-07[/td][td]2023-12-07[/td][/tr][tr][td]Act_5[/td][td]2023-01-04[/td][td]2023-02-04[/td][td]2023-03-04[/td][td]2023-04-04[/td][td]2023-05-04[/td][td]2023-06-04[/td][td]2023-07-04[/td][td]2023-08-04[/td][td]2023-09-04[/td][td]2023-10-04[/td][td]2023-11-04[/td][td]2023-12-04[/td][/tr][tr][td]Act_6 [/td][td]2023-01-03[/td][td]2023-02-03[/td][td]2023-03-03[/td][td]2023-04-03[/td][td]2023-05-03[/td][td]2023-06-03[/td][td]2023-07-03[/td][td]2023-08-03[/td][td]2023-09-03[/td][td]2023-10-03[/td][td]2023-11-03[/td][td]2023-12-03[/td][/tr][/table]
Tabela_2 (1 oznacza dzień roboczy, 2 dzień wolny od pracy):
[table][tr][td]FromDate[/td][td]day type[/td][/tr][tr][td]2023-01-02[/td][td]1[/td][/tr][tr][td]2023-01-03[/td][td]1[/td][/tr][tr][td]2023-01-04[/td][td]1[/td][/tr][tr][td]2023-01-05[/td][td]1[/td][/tr][tr][td]2023-01-06[/td][td]2[/td][/tr][tr][td]2023-01-07[/td][td]2[/td][/tr][tr][td]2023-01-08[/td][td]2[/td][/tr][tr][td]2023-01-09[/td][td]1[/td][/tr][tr][td]2023-01-10[/td][td]1[/td][/tr][tr][td]2023-01-11[/td][td]1[/td][/tr][tr][td]2023-01-12[/td][td]1[/td][/tr][tr][td]2023-01-13[/td][td]1[/td][/tr][tr][td]2023-01-14[/td][td]2[/td][/tr][tr][td]2023-01-15[/td][td]2[/td][/tr][tr][td]2023-01-16[/td][td]1[/td][/tr][tr][td]2023-01-17[/td][td]1[/td][/tr][tr][td]2023-01-18[/td][td]1[/td][/tr][tr][td]2023-01-19[/td][td]1[/td][/tr][tr][td]2023-01-20[/td][td]1[/td][/tr][tr][td]2023-01-21[/td][td]2[/td][/tr][tr][td]2023-01-22[/td][td]2[/td][/tr][tr][td]2023-01-23[/td][td]1[/td][/tr][tr][td]2023-01-24[/td][td]1[/td][/tr][tr][td]2023-01-25[/td][td]1[/td][/tr][tr][td]2023-01-26[/td][td]1[/td][/tr][tr][td]2023-01-27[/td][td]1[/td][/tr][tr][td]2023-01-28[/td][td]2[/td][/tr][tr][td]2023-01-29[/td][td]2[/td][/tr][tr][td]2023-01-30[/td][td]1[/td][/tr][tr][td]2023-01-31[/td][td]1[/td][/tr][tr][td]2023-02-01[/td][td]1[/td][/tr][tr][td]2023-02-02[/td][td]1[/td][/tr][tr][td]2023-02-03[/td][td]1[/td][/tr][tr][td]2023-02-04[/td][td]2[/td][/tr][tr][td]2023-02-05[/td][td]2[/td][/tr][tr][td]2023-02-06[/td][td]1[/td][/tr][tr][td]2023-02-07[/td][td]1[/td][/tr][tr][td]2023-02-08[/td][td]1[/td][/tr][tr][td]2023-02-09[/td][td]1[/td][/tr][tr][td]2023-02-10[/td][td]1[/td][/tr][tr][td]2023-02-11[/td][td]2[/td][/tr][tr][td]2023-02-12[/td][td]2[/td][/tr][tr][td]2023-02-13[/td][td]1[/td][/tr][tr][td]2023-02-14[/td][td]1[/td][/tr][tr][td]2023-02-15[/td][td]1[/td][/tr][tr][td]2023-02-16[/td][td]1[/td][/tr][tr][td]2023-02-17[/td][td]1[/td][/tr][tr][td]2023-02-18[/td][td]2[/td][/tr][tr][td]2023-02-19[/td][td]2[/td][/tr][tr][td]2023-02-20[/td][td]1[/td][/tr][tr][td]2023-02-21[/td][td]1[/td][/tr][tr][td]2023-02-22[/td][td]1[/td][/tr][tr][td]2023-02-23[/td][td]1[/td][/tr][tr][td]2023-02-24[/td][td]1[/td][/tr][tr][td]2023-02-25[/td][td]2[/td][/tr][tr][td]2023-02-26[/td][td]2[/td][/tr][tr][td]2023-02-27[/td][td]1[/td][/tr][tr][td]2023-02-28[/td][td]1[/td][/tr][/table]
...
Witam,
Od kilku dni męczę się z napisaniem pewnej procedury w T-SQL. Chciałbym zaktualizować dane w Tabela_1, w kolumnie Jan powinno sprawdzić korzystając z danych w Tabela_2 czy pierwszy rekord jest dniem roboczym, jeśli tak to przechodzi do następnego rekordu, jeśli nie to odejmuje 1 dzień od daty z komórki i sprawdza ponownie, jeśli nadal data nie jest dniem roboczym to ponownie odejmuje 1 dzień itd. Gdy data będzie dniem roboczym to po przejściu do następnego rekordu najpierw odejmuje liczbę dni jaką trzeba było odjąć od pierwszej daty a następnie wykonuje się ta procedura co wcześniej ze sprawdzaniem czy nowo powstała data jest dniem roboczym, po przejściu do kolejnego rekordu odejmuje liczbę odjętych dni z pierwszego + drugiego rekordu (jeśli trzeba było coś dodatkowo odjąć) itd. Gdy kolumna Jan zostanie sprawdzona to zmienna pamiętająca liczbę dni do odjęcia się zeruje i te same procedury przechodzą do kolumny Feb itd. Przykład: w kolumnie Jan w pierwszym rekordzie zostaje data 2023-01-11, w drugim rekordzie 2023-01-08 jest dniem wolnym od pracy więc data zostaje zmieniona na 2023-01-05, w trzecim rekordzie na start od daty 2023-01-07 odejmujemy 3 dni bo tyle trzeba było odjąć w poprzednim rekordzie, 2023-01-04 jest dniem roboczym więc idziemy dalej, w czwartym rekordzie 2023-01-07 staje się 2023-01-04 tak jak poprzedni, w piątym rekordzie 2023-01-04 staje się 2023-01-01 co jest dniem wolnym od pracy więc odejmujemy dni by była datą roboczą i powstaje 2023-12-30, w ostatnim rekordzie jest 2023-01-03, odejmujemy od tej daty 5 dni i powstaje 2022-12-29. To zapytanie nie może posiadać wirtualnych tabel