SQL条件AND子句?

时间:2011-03-23 07:04:29

标签: tsql sql-server-2005 conditional

在我的查询中,如果出现特定条件,我想在查询中添加和子句。 请参阅我的查询的where子句

1     and ps.dept=dept.deptid  

2     and ps.sdept=deptsub.deptid 

3     and

4   if(ps.dept<>ps.sdept) 

5    begin

6    deptsub.Parent=dept.deptid 

7  end

8  and ps.deptcategory=deptcat.category

在4我想要如果条件满足则应该在查询中添加6,否则这不可能如何。谢谢!

3 个答案:

答案 0 :(得分:4)

怎么样:

and ps.dept=dept.deptid  
and ps.sdept=deptsub.deptid 
and ( ps.dept=ps.sdept or deptsub.Parent=dept.deptid )
and ps.deptcategory=deptcat.category

答案 1 :(得分:3)

尝试用以下方法替换第4,5,6和7行:

deptsub.Parent = 
case when ps.dept <> ps.sdept then dept.deptid 
else deptsub.Parent 
end

在满足条件时,case语句将替换dept.deptid,否则它将只替换deptsub.parent - 这将始终= deptsub.parent

答案 2 :(得分:3)

and ps.dept=dept.deptid  
and ps.sdept=deptsub.deptid 
and
(
    ((ps.dept<>ps.sdept) and (deptsub.Parent=dept.deptid))
    or
    (ps.dept = ps.sdept)
)
and ps.deptcategory=deptcat.category