簡體   English   中英

在SQL過程中的case語句中寫if條件

[英]to write if condition in when statement of case in sql procedure

我在SQL中有以下數據

數據表

我想以這樣的方式編寫查詢:我有約翰·史密斯的數據,中間有首字母M,並且當選擇的許可證扇區字段值不等於非前線時,它應該顯示約翰·史密斯M的許可證扇區值是非前線,門,安全,私人調查。 僅當“角色屬性”為null,角色包含“非第一行”或“非第一行”時,它才會顯示按所選值具有角色的數據。

當我使用下拉菜單從前端向許可證部門傳遞價值時,我的下拉菜單不包含非第一行。 它只是在數據庫中,角色是另一個具有非前線和前線值的下拉菜單。

所以我想以下面的方式

如果從下拉列表中選擇的許可證部門值為門安全並且角色值為空,則將約翰·史密斯M放出

1102551085816250    Smith       John    M   12/15/1987  Non-Frontline   Non-Frontline                   
1102941363382950    Smith       John    M   12/15/1987  Door Security   Frontline                   

如果從下拉列表中選擇的許可證扇區值是門禁安全性,而從下拉列表中選擇的角色值是前線:

 1102941363382950   Smith   John    M   12/15/1987  Door Security   Frontline

如果從下拉列表中選擇的許可證扇區值是門禁安全性,並且從下拉列表中選擇的角色值是非前線,則它不應顯示任何數據,因為沒有這樣的組合

我以以下方式編寫程序

SELECT Licence_Number,
       Family_Name,
       First_Name,
       Middle_Initial,
       Date_of_birth,
       Licence_sector,
       [Role],
       [Expiry_date],
       [Status],
       Status_as_of_date,
       Status_explanation,
       Additional_condition
FROM   Public_Register
WHERE  Family_Name = @Familyname
       AND [Expiry_date] > Getdate()
       AND ( CASE
               WHEN @Forname IS NULL THEN 'A'
               ELSE First_Name
             END LIKE Isnull('%' + @Forname + '%', 'A')
             AND CASE
                   WHEN @MiddleInit IS NULL THEN 'A'
                   ELSE Middle_Initial
                 END = Isnull(@MiddleInit, 'A')
             AND CASE
                   WHEN @DOB IS NULL THEN ''
                   ELSE Date_of_birth
                 END = Isnull(@DOB, '')
             AND ( CASE
                     WHEN @Role IS NULL THEN ''
                     ELSE [Role]
                   END = Isnull(@Role, '') )
              OR [Role] = 'Non-Frontline' )
       AND CASE
             WHEN @Sector IS NULL THEN ''
             ELSE Licence_sector
           END = Isnull(@Sector, '') 

請幫我如何修改程序以獲得所需的輸出。

嘗試修改此行:

    AND (CASE WHEN @Role IS NULL THEN TRUE ELSE ( [Role] = @Role ) END) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM