/ / Napisz zapytanie SQL SQL do pobierania z tabeli Tasks top Status zatwierdzenia, które pojawiają się po pierwszej wartości null - sql, oracle

Napisz zapytanie Oracle SQL, aby pobrać z tabeli Tasks Stan zatwierdzenia, które pojawiają się po pierwszej wartości pustej - sql, oracle

Napisz zapytanie SQL SQL do pobrania z tabeli Zadania do góry Statusy zatwierdzenia, które pojawiają się po pierwszej wartości zerowej w kolumnie Status zatwierdzenia, a następnie w sekwencji Status zatwierdzenia, a następnie niektóre wartości puste

  • Potrzebuję tylko najwyższej sekwencji statusu zatwierdzenia
  • Numer seryjny dla każdego zadania Sekwencja ID zaczyna się od 1, a następnie pojawia się w sekwencji, takiej jak 1.2.3 ... i tak dalej
  • Istnieją tysiące zadań w tabeli, takich jak T1 .... Tn
  • Zobacz wynik zapytania poniżej i muszę napisać zapytanie, które zwraca dane w tym formacie
  • Słyszałem funkcję analityczną, tj. „Klauzula podziału na partycje” może być użyta, ale nie wiem, jak z niej korzystać

Zadania

wprowadź opis obrazu tutaj

Wynik zapytania

wprowadź opis obrazu tutaj

Naprawdę doceniam pomoc ekspertów w tym zakresie Dzięki

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz to zrobić za pomocą funkcji analitycznych, ale istnieje sztuczka. Chodzi o to, aby patrzeć tylko na rzędy approval_status nie jest null. Chcesz pierwszej grupy kolejnych numerów seryjnych w tej grupie.

Grupa jest identyfikowana przez różnicę między sekwencją wyliczającą wszystkie wiersze i istniejącym numerem seryjnym. Aby uzyskać pierwszy, użyj dense_rank(). Na koniec wybierz pierwszy, szukając tych o randze równej 1:

select t.*
from (select t.*, dense_rank(diff) over (partition by taskid) as grpnum
from (select t.*,
(row_number() over (partition by taskid order by serial_number) -
serial_number
) as diff
from tasks
where approval_status is not null
) t
) t
where grpnum = 1;