[英]SQL CASE WHEN with multiple AND and OR
您能告訴我下面的SQL代碼是否有意義。 我在CASE WHEN
使用多個ANDs
和OR
。 謝謝你的幫助!
SELECT id, period,
CASE WHEN state = 'group8' AND mathscore = 0 AND manager = '' OR manager ISNULL
THEN 'Tom' ELSE manager END AS mgr,
CASE WHEN state = 'group8' AND mathscore = 0 AND associate = '' OR associate
ISNULL THEN 'Dick' ELSE associate END AS asso,
CASE WHEN state = 'group8' AND mathscore = 0 AND analyst = '' OR analyst ISNULL
THEN 'Harry' ELSE analyst END AS a
FROM class.sections
使用AND和OR時,應將其括在括號中,以免產生不良結果。 即:
CASE WHEN (state = 'group8' AND mathscore = 0)
AND (manager = '' OR manager ISNULL)
THEN 'Tom' ELSE manager END AS mgr
與以下內容不同:
CASE WHEN (state = 'group8' AND mathscore = 0 AND manager = '')
OR manager ISNULL
THEN 'Tom' ELSE manager END AS mgr
如果沒有可使用的示例數據,我會押注您正在尋找類似的東西,您的空格和NULL與括號一起分組。
另外,我將您的ISNULL
(在某些方言中為函數)更改為IS NULL
(在SQL Server中為狀態,無論如何)。
SELECT
id
,period
,CASE
WHEN state = 'group8'
AND mathscore = 0
AND (manager = ''
OR manager IS NULL) THEN 'Tom'
ELSE manager
END AS mgr
,CASE
WHEN state = 'group8'
AND mathscore = 0
AND (associate = ''
OR associate IS NULL) THEN 'Dick'
ELSE associate
END AS asso
,CASE
WHEN state = 'group8'
AND mathscore = 0
AND (analyst = ''
OR analyst IS NULL) THEN 'Harry'
ELSE analyst
END AS a
FROM
class.sections;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.