ALTER PROCEDURE [dbo].[sp_TestSetupGroupsGet] @GroupId INT = NULL, @TestSetupId INT = NULL, @TestSetupName NVARCHAR (255) = NULL AS BEGIN SET NOCOUNT ON; if( @GroupId IS NULL) BEGIN if( @TestSetupId IS NULL) BEGIN if(@TestSetupName IS NULL) BEGIN SELECT GroupId, DisplayOrder, Position, TestObjectType, TestSetupId FROM [dbo].[TestSetupGroups] END ELSE BEGIN SELECT A.GroupId, A.DisplayOrder, A.Position, A.TestObjectType, A.TestSetupId, B.DisplayName, B.Embedded, B.SerialNumber FROM [dbo].[TestSetupGroups] AS A INNER JOIN [dbo].[Groups] AS B ON A.GroupId=B.Id INNER JOIN [dbo].[TestSetups] AS C ON A.TestSetupId=C.TestSetupId WHERE C.TestSetupName=@TestSetupName END END ELSE BEGIN SELECT A.GroupId, A.DisplayOrder, A.Position, A.TestObjectType, A.TestSetupId, B.DisplayName, B.Embedded, B.SerialNumber FROM [dbo].[TestSetupGroups] AS A INNER JOIN [dbo].[Groups] AS B ON A.GroupId=B.Id WHERE A.TestSetupId=@TestSetupId END END ELSE BEGIN if( @TestSetupId IS NULL) BEGIN SELECT A.GroupId, A.DisplayOrder, A.Position, A.TestObjectType, A.TestSetupId, B.DisplayName, B.Embedded, B.SerialNumber FROM [dbo].[TestSetupGroups] AS A INNER JOIN [dbo].[Groups] AS B ON A.GroupId=B.Id WHERE A.GroupId=@GroupId END ELSE BEGIN SELECT A.GroupId, A.DisplayOrder, A.Position, A.TestObjectType, A.TestSetupId, B.DisplayName, B.Embedded, B.SerialNumber FROM [dbo].[TestSetupGroups] AS A INNER JOIN [dbo].[Groups] AS B ON A.GroupId=B.Id WHERE A.TestSetupId=@TestSetupId AND A.GroupId=@GroupId END END END