
DROP PROCEDURE  IF EXISTS uspGetHittanOraszamList
GO
  CREATE PROCEDURE uspGetHittanOraszamList
     @pIntezmenyId INT
    ,@pTanevId INT
    ,@pCsoportTipus INT
    ,@pHittanAdatszolgaltatasLetszamDatum DATETIME
    ,@pStartDate DATETIME
    ,@pEndDate DATETIME
    ,@pOktNevKatTipus INT
  AS
  BEGIN
    SET NOCOUNT ON;

    SELECT x.ID
      ,x.CsoportNev
      ,x.HittanTipus
      ,x.MegtartottDarabszam
      ,ISNULL(x.Darabszam, x.MegtartottDarabszam) AS Darabszam
      ,ISNULL(x.Letszam, x.SzamitottLetszam) AS Letszam
    FROM (
      SELECT cs.ID AS ID
        ,ocs.C_NEV AS CsoportNev
        ,ha.C_HITTANTIPUSID AS HittanTipus
        ,(
          SELECT count(1)
          FROM T_TANITASIORA_OSSZES t
          WHERE t.C_OSZTALYCSOPORTID = cs.ID
            AND t.TOROLT = 'F'
            AND t.C_MEGTARTOTT = 'T'
            AND t.C_ORAKEZDETE >= @pStartDate
            AND t.C_ORAKEZDETE <= @pEndDate
          ) AS MegtartottDarabszam
        ,ha.C_EDDIGIORASZAM AS Darabszam
        ,(
          SELECT count(1)
          FROM T_TANULOCSOPORT_OSSZES t
          WHERE t.C_OSZTALYCSOPORTID = cs.ID
            AND t.TOROLT = 'F'
            AND t.C_BELEPESDATUM <= @pHittanAdatszolgaltatasLetszamDatum
            AND (
              t.C_KILEPESDATUM >= @pHittanAdatszolgaltatasLetszamDatum
              OR t.C_KILEPESDATUM IS NULL
              )
          ) AS SzamitottLetszam
        ,ha.C_CSOPORTLETSZAM AS Letszam
      FROM T_CSOPORT_OSSZES cs
      INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = cs.ID
        AND ocs.TOROLT = 'F'
        AND ocs.C_FELADATKATEGORIAID = @pOktNevKatTipus
      LEFT JOIN T_HITTANADATSZOLGALTATAS_OSSZES ha ON ha.C_OSZTALYCSOPORTID = cs.ID
        AND ha.TOROLT = 'F'
        AND ha.CREATED >= @pStartDate
        AND ha.CREATED <= @pEndDate
      WHERE cs.TOROLT = 'F'
        AND cs.C_TIPUSA = @pCsoportTipus
        AND cs.C_ALINTEZMENYID = @pIntezmenyId
        AND cs.C_ALTANEVID = @pTanevId
      ) AS x
  END
GO