Třídová akce

Popis:
Vrátí nejlepší schválené firmy pro zadané oblasti schvalování. Vstup: Sel_ApprovingAreas - Odkaz do tabulky SelDat, kde jsou identifikátory oblastí schvalování. Sel_Firms - Odkaz do tabulky SelDat, kde jsou identifikátory firem, za které lze omezit hledání. Výstup: Identifikátor schváleného dodavatele (firmy).
Kód:
5
Tělo:
SELECT FIRST 1 
  A.Firm_ID
FROM
(
  SELECT F.ID AS Firm_ID, S.OverallRatingScore AS OverallRatingScore -- Schválení dodavatelé
  FROM Firms F
  JOIN ApprovedSuppliers S ON S.Firm_ID = F.ID
  WHERE 
    -- Hledám v nepředchůdcích
    F.Firm_ID IS NULL AND
    (:Sel_Firms = CAST('' AS VARCHAR(10)) OR F.ID IN (SELECT COALESCE(FS.Firm_ID, FS.ID) AS Firm_ID FROM SelDat SD JOIN Firms FS ON FS.ID = SD.Obj_ID WHERE SD.Sel_ID = :Sel_Firms)) AND
    S.IsApproved = 'A' AND
    S.ApprovingArea_ID IN (SELECT Obj_ID FROM SelDat WHERE Sel_ID = :Sel_ApprovingAreas)
  GROUP BY F.ID, S.OverallRatingScore
  UNION
  SELECT F.ID  AS Firm_ID, S2.OverallRatingScore AS OverallRatingScore -- Schválení dodavatelé ze schválených předků
  FROM Firms F
  JOIN Firms F2 ON F2.Firm_ID = F.ID
  JOIN ApprovedSuppliers S2 ON F2.ID = S2.Firm_ID
  WHERE 
    -- Hledám v nepředchůdcích
    F.Firm_ID IS NULL AND
    (:Sel_Firms = CAST('' AS VARCHAR(10)) OR F.ID IN (SELECT COALESCE(FS.Firm_ID, FS.ID) AS Firm_ID FROM SelDat SD JOIN Firms FS ON FS.ID = SD.Obj_ID WHERE SD.Sel_ID = :Sel_Firms)) AND
  NOT EXISTS (SELECT ID FROM ApprovedSuppliers S WHERE S.Firm_ID = F.ID AND S.ApprovingArea_ID = S2.ApprovingArea_ID) AND
  S2.ApprovingArea_ID IN (SELECT Obj_ID FROM SelDat WHERE Sel_ID = :Sel_ApprovingAreas)
  GROUP BY F.ID, S2.OverallRatingScore
  HAVING 
    -- Musí být všichni předchůdci schváleni
  SUM(CASE WHEN S2.IsApproved = 'A' THEN 1 ELSE 0 END) > 0 AND 
  SUM(CASE WHEN S2.IsApproved = 'N' THEN 1 ELSE 0 END) = 0 
) A
ORDER BY A.OverallRatingScore DESC, A.Firm_ID

Generated by ABRA Software a.s. 27.10.2021 16:35:29