2015-06-10 2 views
1

Я работаю над веб-приложением HRM. Теперь мне нужно сделать отчет о посещаемости в этом приложении. Для этого у нас есть расширенная форма отчета для поиска, у нас есть поля EmployeeId, DateFrom и DateTo, чтобы найти мудрый отчет по дате поиска. Я хотел бы использовать хранимую процедуру для поиска отчета о посещаемости.Расширенный дополнительный параметр Поиск с использованием хранимой процедуры в SQL

Проблема, с которой я сталкиваюсь с employeeId, DateFrom и DateTo, не является compalsary. Но мы должны искать то, что данный ввод может быть только с employeeId, или может быть с employeeId и DateFrom, Some может быть employeeId, DateFrom, DateTo

Мне нужно решить нулевое значение, если какой-либо параметр не является представить, когда запрос идет к хранимой процедуре надеюсь, вы поняли мою ситуацию ... кто-нибудь может мне помочь ...

ответ

1
CREATE PROCEDURE [dbo].[USP_Employees_Search] 
    @EmployeeId   Int = Null 
    ,@FromDate    Date = Null 
    ,@ToDate    Date = Null 
AS 
BEGIN 

    Set Nocount On; 

    Select * 
    From dbo.Employees As e With (Nolock) 
    Where (Isnull(@EmployeeId,0) = 0 Or e.EmployeeId = @EmployeeId) 
      And (@FromDate Is Null Or e.[someDateAttribute] >= @FromDate) 
      And (@ToDate Is Null Or e.[someDateAttribute] <= @Todate) 

END 
GO 
+0

это именно то, что я expecting..thak вам, сэр ... here..if мы не даем значение параметру DateTo, он получит целые данные, которые начинаются с DateFrom .. есть какой-либо способ получить отчет только в тот день –

+0

Нужно взять флаг, как @IsSameDay Varchar (1), и если пройденное значение as 'y' затем назначить dateFrom в dateTo и будет работать в течение этого дня только с таким же запросом –

+0

Я хочу предложение .., что в приведенной выше таблице проблем column 'Punchin' и 'PuchOut' являются varchar, мой код ниже employeeId int = нуль, \t datefrom VARCHAR = нуль, \t dateto VARCHAR = нуль Могу ли я эту операцию можно где (IsNull (EmployeeID, 0) = 0 или ejd.recordId = EmployeeID) \t и (datefrom равно нулю или объявления .punchin> = datefrom) \t и (dateto is null или ad.punchout <= dateto) –

Смежные вопросы