2011-12-02 72 views
1

我需要建議編寫滿足這些條件的查詢。如何編寫查詢以滿足搜索條件

我傳遞三個參數到存儲過程:

  • to date
  • from date
  • is active

的要求是這樣的:

  • 上頁面加載顯示今天
  • 誰是regisatar上只傳遞to date然後我需要顯示只有那些誰註冊器,直到日期
  • 在經過from date顯示只有那些誰是日期
  • 後兩者那麼只有那些誰落他們之間

我試過了,但那是完全浪費。

If (@viewPending = 1 or @viewPending = 0) 
    Begin 
     IF @TDate IS NULL AND @FDate IS NOT NULL 
      SELECT 
      RegDate, 
      CenterName As [Center Name], 
      OwnerName As [Owner Name], 
      MobileNo As [Mobile], 
      MailID  As [EMail ID], 
      isVerified As [Verified] 
     FROM TBL_iREGFORM 
     WHERE REGDATE >= @FDate AND isVerified in (Case When @viewPending =1 Then 0 Else 1 | 0 End) 
     IF @TDate IS NOT NULL AND @FDate IS NULL 
      SELECT 
      RegDate, 
      CenterName As [Center Name], 
      OwnerName As [Owner Name], 
      MobileNo As [Mobile], 
      MailID  As [EMail ID], 
      isVerified As [Verified] 
     FROM TBL_iREGFORM 
     WHERE REGDATE <= @FDate AND isVerified in (Case When @viewPending =1 Then 0 Else 1 | 0 End) 
     IF @TDate IS NOT NULL AND @FDate IS NOT NULL 
      SELECT 
      RegDate, 
      CenterName As [Center Name], 
      OwnerName As [Owner Name], 
      MobileNo As [Mobile], 
      MailID  As [EMail ID], 
      isVerified As [Verified] 
     FROM TBL_iREGFORM 
     WHERE REGDATE BETWEEN @FDate AND @TDATE AND isVerified in (Case When @viewPending =1 Then 0 Else 1 | 0 End) 
    ELSE 

      SELECT 
      RegDate, 
      CenterName As [Center Name], 
      OwnerName As [Owner Name], 
      MobileNo As [Mobile], 
      MailID  As [EMail ID], 
      isVerified As [Verified] 
     FROM TBL_iREGFORM 
     WHERE REGDATE =CONVERT(VARCHAR(10),GETDATE(),103) AND isVerified in (Case When @viewPending =1 Then 0 Else 1 | 0 End) 

回答

4
SELECT * FROM 
    MyTable 
WHERE 
    (@startDate IS NULL OR RegisterDate >= @startDate) 
AND (@endDate IS NULL OR RegisterDate <= @endDate) 
AND (@active IS NULL OR Active = @active)