SQL условный оператор И? - PullRequest
2 голосов
/ 23 марта 2011

В моем запросе я хочу добавить предложение и в запрос, если возникает определенное условие.См. Предложение 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 ]

4 голосов
/ 23 марта 2011

Как насчет:

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
3 голосов
/ 23 марта 2011
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
3 голосов
/ 23 марта 2011

Попробуйте заменить строки 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

...