-3

レポート ビューアー用に次のクエリを作成しています。

SELECT        Cust_Id, Clients_Title, Card_Number, Key_Person, Address_Current, Phone_Number, Mobile_Number, AreaLocation
FROM            Customer_New
WHERE        (Clients_Title = @Clients_Title) OR
                         (Address_Current = @Address_Current) OR
                         (Phone_Number = @Phone_Number) OR
                         (Mobile_Number = @Mobile_Number) OR
                         (AreaLocation = @AreaLocation)  

私が欲しいのは:

  • レポート ビューアーに提供されるパラメーターがない場合は、すべての顧客レコードが表示されます。
  • パラメーターが指定されている場合、OR条件が実装されます。
  • 最後に、where 条件にコントラストがある場合、レコードは表示されません。

どうすればこれを達成できるか教えてもらえますか?

4

2 に答える 2

2
SELECT Cust_Id, Clients_Title, Card_Number, Key_Person, Address_Current, Phone_Number, Mobile_Number, AreaLocation
FROM Customer_New
WHERE (Clients_Title = @Clients_Title   OR @Clients_Title IS NULL)
AND (Address_Current  = @Address_Current OR @Address_Current IS NULL) 
AND (Phone_Number     = @Phone_Number    OR @Phone_Number IS NULL) 
AND (Mobile_Number    = @Mobile_Number   OR @Mobile_Number IS NULL) 
AND (AreaLocation     = @AreaLocation    OR @AreaLocation  IS NULL) 
于 2013-11-12T10:22:35.443 に答える
0

正解は次のとおりです。

SELECT        Cust_Id, Clients_Title, Card_Number, Key_Person, Address_Current, Phone_Number, Mobile_Number, AreaLocation
    FROM            Customer_New
        where        (CASE
            WHEN @Clients_Title != ''   THEN Clients_Title=@Clients_Title
          ELSE
             NULL IS NULL
          END)
          AND(CASE
            WHEN @Address_Current != '' THEN Address_Current =@Address_Current
          ELSE
             NULL IS NULL
          END)
                  AND(CASE
            WHEN @Phone_Number != '' THEN Phone_Number=@Phone_Number
          ELSE
             NULL IS NULL
          END)
          AND(CASE
            WHEN @Mobile_Number != '' THEN Mobile_Number=@Mobile_Number
          ELSE
             NULL IS NULL
          END)
          AND(CASE
            WHEN @AreaLocation != '' THEN AreaLocation =@AreaLocation
          ELSE
             NULL IS NULL
          END)
于 2013-11-19T16:15:23.670 に答える