mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
ID z bazy danych aktywnych kont https://forum.mix-soft.pl/viewtopic.php?f=16&t=9993 |
Strona 1 z 1 |
Autor: | Lnyga [ 2021-07-14, 11:50 ] |
Tytuł: | ID z bazy danych aktywnych kont |
witam OD jakiegoś czasu próbuję napisać query do wyświetlenia wszystkich ID z bazy pracowników z podziałem na status (lub coś co pozwoli na rozróżnienie pracowników) Generalnie chodzi mi o zestawienie wszystkich ID z info: | ID pracownika | Status | |----------------------------------------------------------------| | 434134 | ok | | 234123 | wypowiedzenie umowy | | 213412 | nie pracuje | z góry dziękuję pozdrawiam L |
Autor: | Lnyga [ 2021-07-16, 14:32 ] |
Tytuł: | 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() |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |