Re: ID z bazy danych aktywnych kont
Znalazłem rozwiązanie:
use [SAGE_KIP]
SELECT
I.[employee_id]
,case
when max(R.end_date) <= getdate() then 0
when datediff(day, getdate(), max(R.end_date)) < 90 then -1
when max(R.end_date) >= getdate() then 1
end as is_active
FROM [KD].[HRV_ITEMS] I
left join [KD].[HRV_ROWS] R on R.id = I.row_id
where I.definition_id = (select id from [KD].[SKLADNIKI] where nazwa = 'data zakończenia pracy')
group by I.employee_id
w zapytaniu zastosowałem składnię z nazwy dla ułatwienia uzyskania id składnika
(select id from [SAGE_COI_KIP].[KD].[SKLADNIKI] where nazwa = 'data zakończenia pracy')w taki sposób zamiast wpisywać ID pozycji (w moim przypadku jest to 8513) użyłem opcji wyszukania id pozycji po nazwie, czyli nie trzeba znać id z symfonii danego składnika a jedynie jego nazwę (to rozwiązanie sprawdza się przy innych zaawansowanych zapytaniach)
wynik zapytania wyświetlany jest w dwóch kolumnach: employee_id oraz is_active
przy czym:
0 = pracownik już nie pracuje
1 = pracownik nadal jest zatrudniony
-1 = niedługo umowa wygaśnie, zbliża się termin umowy
|...20978.....|..0..|
|...20979.....|..1..|
|...20980.....|..0..|
|...20981.....|..1..|
|...20982.....|.-1..|
|...20983.....|..0..|
|...20984.....|..1..|
|...20985.....|..0..|
|...20986.....|.-1..|
|...20987.....|..1..|usuwając tą linię z zapytania
when datediff(day, getdate(), max(R.end_date)) < 90 then -1 widok będzie zawierał listę aktywnych i nie aktywnych pracowników, czyli tylko 0 i 1
Teraz już jest z górki
do tego widoku można podłączyć imiona i nazwiska. No i powstała piękna lista pracowników, teraz można założyć dodatkowy filtr pokazujący tylko pracowników z parametrem 1 dla is_active lub dopisać do where:
and R.end_date >= getdate()