gpt4 book ai didi

sql-server - 在 'case when ' 子句 sql server 中使用 'where' 时出现问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:24 26 4
gpt4 key购买 nike

当在 sql 查询中的 where 子句中使用 case when 时,它不起作用。

问题:

我有两个名为 TblEmployee 和 TblAssociate 的表。两个表都包含公共(public)列 PeriodId、EmpId 和 AssociateId。我的要求是从中获取值应排除具有来自 TblAssociate 的 EmpId 和 AssociateId 组合的 TblEmployee。排除应基于 PeriodId 条件。`

If(@PeriodID<50)
BEGIN
SELECT *
FROM TblEmployee
WHERE (EmpId+AssociateId) NOT IN (SELECT EmpId+AssociateId FROM TblAssociate)
END
ELSE
BEGIN
SELECT *
FROM TblEmployee
WHERE (EmpId) NOT IN (SELECT EmpId FROM TblAssociate)
END

上面的代码可以工作,但我需要避免 IF-ELSE 条件,我希望在 where 子句中使用“case when”。请帮忙

最佳答案

试试这个:

SELECT * 
FROM TblEmployee
WHERE (EmpId + CASE WHEN @PeriodID<50 THEN AssociateId ELSE 0 END) NOT IN
(SELECT EmpId + CASE WHEN @PeriodID<50 THEN AssociateId ELSE 0 END FROM TblAssociate)

您说您的代码可以正常工作,但这很奇怪,因为将 id 值加在一起没有多大意义。在任何情况下,上述语句产生的结果都等同于最初发布的代码。

关于sql-server - 在 'case when ' 子句 sql server 中使用 'where' 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37202574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com