select wyciągający dwa poziomy grupowania w jednym zapytaniu

select wyciągający dwa poziomy grupowania w jednym zapytaniu
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

Witam. Używam silnika firebird, ale w wersji 2.5. Potrzebuję napisać zapytanie, które wyciągnie mi w tym jednym zapytaniu dwa poziomy grupowania. W Firebird 3.0 można korzystać z funkcji analitycznych, jednak na fb 2.5 nie ma takiej możliwości, stąd mój problem. Do rzeczy:
Muszę wyciągnąć numery kadrowe pracowników, id etatu, id płatnika, ale tylko pracowników z więcej niż jednym etatem u więcej niż jednego płatnika.
Mam takie dwa cząstkowe zapytania

  1. select wyciągający powyższe dane dla pracowników z więcej niż jednym etatem:
Kopiuj
select C.ETAT_IDKADR, C.ETAT_ID, C.ETAT_PLATNIK, ILOSC
from PL_REJ_ETATY C
join(select B.ETAT_IDKADR as ETAT_IDKADR, count(B.ETAT_ID) as ILOSC
     from PL_REJ_ETATY B
     group by 1
     having count(ETAT_ID) > 1) on C.ETAT_IDKADR = ETAT_IDKADR;

i jego wyniki:

screenshot-20210110223138.png

  1. select wyciągający powyższe dane z podaniem ilości etatów przypadających na płatnika, ale bez podania ilości etatów ogółem:
Kopiuj
select distinct c.ETAT_IDKADR, C.ETAT_ID, C.ETAT_PLATNIK, ILOSC
from PL_REJ_ETATY C
join(select B.ETAT_IDKADR as ETAT_IDKADR, B.ETAT_PLATNIK, count(B.ETAT_ID) as ILOSC
     from PL_REJ_ETATY B
     group by 1, 2) on C.ETAT_IDKADR = ETAT_IDKADR;

i jego wyniki:
screenshot-20210110224615.png

I teraz najważniejsze do zrozumienia problemu:
na pierwszym zrzucie jest zaznaczony etat_idkadr 14, który w kolumnie ilosc ma wartość 2, co oznacza, że ma 2 etaty.
Natomiast na drugim ten sam etat_id kadr ma w kolumnie ilosc, wartość 1, co oznacza na każdego z płatników (1 i 10) przypada po jednym etacie.
I teraz mi chodzi o to, żeby napisać takiego selecta, który wyciągnie tylko takie przypadki jak etat_id kadr = 14, czyli posiadają więcej niż jeden etat u więcej niż jednego płanika.

FA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 218
1

Inner join tych dwóch zapytań...

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

@Fac:
Dzięki za odpowiedź, Rzeczywiście zadziałało.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.