Tomasz Serwański

Tomasz Serwański Microsoft Dynamics
CRM - konsultant
biznesowy

Temat: ..a skoro grupa na chwilę ożyła.. :)

to też mam pytanie; bardziej logiczne niż techniczne, ale może ktoś coś podobnego przerabiał.

1) mam tabelę zdarzęń z datami: otwarcia zdarzenia i zakończenia zdarzenia; na podstawie dat wyliczam (datediff) różnicę w godzinach i kpi; jeżeli jest do 24h jest ok, jeżeli dłużej - nie ok

2) powyższe działało pięknie dopóki nie padł pomysł żeby odliczać dni wolne od pracy; w efekcie mam obok tabelę w której jest jedna kolumna z dniami, przy czym tylko wolnymi (nie wszystkimi w roku)

3) obecnie boksuję się z zadaniem odliczenia od kpi w godzinach wyliczonego jak w p. 1 powyżej tylu godzin, ile dni wolnych od pracy mogło się trafić między początkiem a końcem zdarzenia

4) jeden z przypadków którego nie potrafię prosto opisać to zdarzenie (dla ułatwienia mówie o dniach, nie godzinach):
- początek w czwartek
- koniec we wtorek
- wolne dni po drodze to sobota i niedziela (weekend) oraz poniedziałek
- punkt 1 powiedziałby że datediff to 5 dni
- uwzglednienie weekendu i dnia wolnego każe powiedzieć że nie 5, a 2 dni

i pytanie - jak ująć w wyliczaniu ilości dni wolne, które są pomiędzy początkiem a końcem zdarzenia?
Hubert Kobierzewski

Hubert Kobierzewski BI Practice Lead,
Codec

Temat: ..a skoro grupa na chwilę ożyła.. :)

Witam,

Jako, że robię głównie w hurtowniach to napiszę swój sposób. Zapewne są jeszcze takie bardziej optymalne, ale brak czasu nie pozwala na pochylenie się nad tym przypadkiem.

1. Robię w pamięci lub tempDB kalendarz w zakresie, który mnie interesuje. Np. DimDate
2. Robimy CROSS APPLY z tabelą zdarzeń. Stawiamy dwa warunki:

WHERE (DimDate.DateValue BETWEEN TabelaZdarzen.DataStart AND TabelaZdarzen.DataEnd) AND (DimDate.DateValue NOT IN (SELECT dw.WolnyDzien FROM WolneDni dw))

3. Zliczamy sumę ilości tych dni dla każdego zdarzenia i odejmujemy jeden.

Hubert
Tomasz Serwański

Tomasz Serwański Microsoft Dynamics
CRM - konsultant
biznesowy

Temat: ..a skoro grupa na chwilę ożyła.. :)

Hubert K.:
mam podobnie - robie w widoku dodatkowe kolumny dla zakresu dat z case'm dla tych dni - ale malo to eleganckie, myslalem ze ktos podpowie jakies łał.. :)

Następna dyskusja:

Nowa grupa o PerformancePoi...




Wyślij zaproszenie do