Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  BEGIN  
  2.     RETURN QUERY
  3.     SELECT  ff1.id, ff1.numer, ff1.id_nadzadania, ff1.nazwa, ff1.rozpoczecie, ff1.faktyczne_zakonczenie, ff1.czas_trwania, ff1. zakonczenie,   ff1.zalozony_koszt,
  4.         ff1.faktyczny_koszt, ff1.roznica, ff1.praca, ff1.numery_poprzednikow, ff1.postep, ff2.pracownicy
  5.     FROM(
  6.         SELECT zzz1.id, zzz1.id_nadzadania, zzz1.numer, zzz1.nazwa, zzz1.praca, zzz1.zalozony_koszt, zzz1.rozpoczecie,
  7.             zzz1.faktyczne_zakonczenie, zzz1.numery_poprzednikow, zzz1.faktyczny_koszt, zzz1.roznica, zzz1.zakonczenie, zzz1.czas_trwania, zzz2.postep,  zzz1.id_projektu
  8.         FROM(
  9.             SELECT z.id, z.numer, z.id_nadzadania, z.nazwa, z.praca, z.zalozony_koszt, z.rozpoczecie, z.id_projektu  ,
  10.                 z.faktyczne_zakonczenie, z.faktyczny_koszt, z.roznica, z.zakonczenie, z.czas_trwania, string_agg(CAST(zp.numer_poprzednika AS VARCHAR) || zp.typ, ', ') numery_poprzednikow
  11.             FROM zadania z
  12.             LEFT JOIN zadania_poprzedniki zp
  13.             ON z.id = zp.id_zadania GROUP BY z.id
  14.         ) as zzz1
  15.         LEFT JOIN (
  16.             SELECT zz.id, p.id_zadania, p.postep, p.data_sprawdzenia
  17.             FROM zadania zz
  18.             LEFT JOIN (
  19.                 select distinct p1.id_zadania, postep_top.postep, postep_top.data_sprawdzenia from postep p1
  20.                 join lateral (
  21.                     select * from postep p2
  22.                     where p1.id_zadania = p2.id_zadania
  23.                     order by p2.data_sprawdzenia asc
  24.                     limit 1
  25.                 ) postep_top on true
  26.                 order by p1.id_zadania
  27.                 ) p
  28.             ON zz.id = p.id_zadania --order by p.data_sprawdzenia desc limit 1
  29.         ) as zzz2
  30.         ON zzz1.id = zzz2.id GROUP BY zzz1.id, zzz1.numer, zzz1.nazwa, zzz1.praca, zzz1.zalozony_koszt, zzz1.rozpoczecie,
  31.             zzz1.faktyczne_zakonczenie, zzz1.numery_poprzednikow, zzz1.faktyczny_koszt, zzz1.roznica , zzz1.zakonczenie, zzz1.czas_trwania, zzz2.postep, zzz1.id_nadzadania, zzz1.id_projektu ORDER BY zzz1.id
  32.     ) ff1
  33. LEFT JOIN (
  34.             SELECT zp.id_zadania, string_agg(p.imie, ', ') pracownicy
  35.             FROM zadania_pracownicy zp
  36.             LEFT JOIN pracownicy p ON zp.id_pracownika = p.id GROUP BY zp.id_zadania
  37. ) ff2 ON ff1.id = ff2.id_zadania WHERE ff1.id_projektu = $1 ORDER BY ff1.numer;
  38. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement