[英]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.