DROP PROCEDURE IF EXISTS uspDeleteAllZaradekokAndZaradekNyelvekByTanulocsoportok GO CREATE PROCEDURE uspDeleteAllZaradekokAndZaradekNyelvekByTanulocsoportok @pModifierId int ,@pTanuloCsoportIdList nvarchar(max) ,@pIsOsztalyList bit AS BEGIN SET NOCOUNT ON; IF(@pIsOsztalyList = 1) BEGIN ;WITH ZaradekCTE AS ( SELECT z.ID ,IIF(tcs.C_KILEPESDATUM IS NULL OR z.C_ISKIVAGYATSOROLASIZARADEK = 'F' , 2, ROW_NUMBER() OVER (PARTITION BY C_TANULOCSOPORTID ORDER BY C_ISKIVAGYATSOROLASIZARADEK DESC, C_ROGZITESDATUMA DESC)) AS RN FROM T_ZARADEK_OSSZES z INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID AND tcs.TOROLT = 'F' WHERE tcs.ID IN (SELECT VALUE FROM string_split(@pTanuloCsoportIdList, ',')) AND z.TOROLT = 'F' ) ​ UPDATE z SET z.TOROLT = 'T' ,z.SERIAL += 1 ,z.LASTCHANGED = GETDATE() ,z.MODIFIER = @pModifierId FROM T_ZARADEK_OSSZES z INNER JOIN ZaradekCTE zcte ON zcte.ID = z.ID WHERE zcte.RN > 1 ​ END ELSE BEGIN UPDATE z SET z.TOROLT = 'T' ,z.SERIAL += 1 ,z.LASTCHANGED = GETDATE() ,z.MODIFIER = @pModifierId FROM T_ZARADEK_OSSZES z INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID WHERE tcs.ID IN (SELECT VALUE FROM string_split(@pTanuloCsoportIdList, ',')) AND z.TOROLT = 'F' END UPDATE zny SET zny.TOROLT = 'T' ,zny.SERIAL = zny.SERIAL + 1 ,zny.LASTCHANGED = GETDATE() ,zny.MODIFIER = @pModifierId FROM T_ZARADEKNYELV_OSSZES zny INNER JOIN T_ZARADEK_OSSZES z ON z.ID = zny.C_ZARADEKID INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID AND tcs.TOROLT = 'F' WHERE zny.TOROLT = 'F' AND z.TOROLT = 'T' END GO