CASE WHEN 中的 OR 关键字本身位于 WHERE 子句中
OR keyword in a CASE WHEN which is itself in a WHERE clause
首先 post 在这里,但多年来我一直是潜伏者。开始了:
我得到这个查询,它在 WHERE 中有一个 CASE WHEN 子句。但是,我需要在该 CASE WHEN.
中搜索两种可能的状态
代码如下:
SELECT
[...]
FROM
[...]
WHERE
(Admissions.Session = @Session) AND
(Admissions.Remark IN
CASE (RIGHT(@Session, 1))
WHEN 1 THEN ('HY', 'HN')
WHEN 3 THEN ('AY', 'AN')
END)
基本上,当会话参数的最后一位数字为“1”时,我尝试获取所有 Admissions.Remark 为 'HY' 或 'HN' 的行。
如果会话参数以'3'结尾,那么我想抓取 'AY' 或 'AN'
的备注
我也试过这样的东西:
(Admissions.Remark = CASE (RIGHT(@Session, 1))
WHEN 1 THEN 'HY'
WHEN 1 THEN 'HN'
WHEN 3 THEN 'AY'
WHEN 3 THEN 'AN'
END)
...但均无效。后者只返回设置备注 'HY' 的行,忽略 'HN' 的。
因此我正在寻找这样的东西:
(Admissions.Remark = CASE (RIGHT(@Session, 1))
WHEN 1 THEN 'HY' OR 'HN'
WHEN 3 THEN 'AY' OR 'AN'
END)
有什么建议吗?我觉得我很接近它,但缺少一些部分。
谢谢!
我想这就是您要找的
Admissions.Remark = CASE
WHEN RIGHT(@Session, 1) = 1 AND ('HY', 'HN')
WHEN RIGHT(@Session, 1) = 3 AND ('AY', 'AN')
END
您可以使用:
SELECT ...
FROM ...
WHERE
(CASE WHEN Admissions.Remark IN ('HY', 'HN') THEN 1
WHEN Admissions.Remark IN ('AY', 'AN') THEN 3
END) = RIGHT(@Session, 1)
你也可以试试下面的语句
SELECT ...
FROM ...
WHERE
((Admissions.Remark ='HY' OR Admission.Remark = 'HN') AND RIGHT(@Session, 1) = 1)
OR ((Admissions.Remark ='AY'OR Admission.Remark = 'AN') AND RIGHT(@Session, 1) = 3)
首先 post 在这里,但多年来我一直是潜伏者。开始了:
我得到这个查询,它在 WHERE 中有一个 CASE WHEN 子句。但是,我需要在该 CASE WHEN.
中搜索两种可能的状态代码如下:
SELECT
[...]
FROM
[...]
WHERE
(Admissions.Session = @Session) AND
(Admissions.Remark IN
CASE (RIGHT(@Session, 1))
WHEN 1 THEN ('HY', 'HN')
WHEN 3 THEN ('AY', 'AN')
END)
基本上,当会话参数的最后一位数字为“1”时,我尝试获取所有 Admissions.Remark 为 'HY' 或 'HN' 的行。 如果会话参数以'3'结尾,那么我想抓取 'AY' 或 'AN'
的备注我也试过这样的东西:
(Admissions.Remark = CASE (RIGHT(@Session, 1))
WHEN 1 THEN 'HY'
WHEN 1 THEN 'HN'
WHEN 3 THEN 'AY'
WHEN 3 THEN 'AN'
END)
...但均无效。后者只返回设置备注 'HY' 的行,忽略 'HN' 的。
因此我正在寻找这样的东西:
(Admissions.Remark = CASE (RIGHT(@Session, 1))
WHEN 1 THEN 'HY' OR 'HN'
WHEN 3 THEN 'AY' OR 'AN'
END)
有什么建议吗?我觉得我很接近它,但缺少一些部分。 谢谢!
我想这就是您要找的
Admissions.Remark = CASE
WHEN RIGHT(@Session, 1) = 1 AND ('HY', 'HN')
WHEN RIGHT(@Session, 1) = 3 AND ('AY', 'AN')
END
您可以使用:
SELECT ...
FROM ...
WHERE
(CASE WHEN Admissions.Remark IN ('HY', 'HN') THEN 1
WHEN Admissions.Remark IN ('AY', 'AN') THEN 3
END) = RIGHT(@Session, 1)
你也可以试试下面的语句
SELECT ...
FROM ...
WHERE
((Admissions.Remark ='HY' OR Admission.Remark = 'HN') AND RIGHT(@Session, 1) = 1)
OR ((Admissions.Remark ='AY'OR Admission.Remark = 'AN') AND RIGHT(@Session, 1) = 3)