2015-06-30 39 views
1

我试图设置WHERE子句来查询所有紧急程度级别(1,2,3,4) 当选择“全部”时。如何在WHERE子句内格式化这个CASE表达式?

为@priority的值是: 1 - (严重) 2 - (高) 3 - (中等) 4 - (低) 全部 - (所有优先级)

... 。

WHERE Facility = 'HQ' 
AND Urgency = CASE WHEN @Priority = 'All' THEN IN ('1','2','3','4') 
    ELSE Urgency = @Priority 
END 

=================

所以,如果 '1' 被选择为@priority,然后急= 1,如果 '2'被选中,那么Urgency = 2。如果'All'是选择,那么“紧迫性IN('1','2','3','4')”。

有没有办法做到这一点?
谢谢!

回答

1

试试这个:

WHERE 
    Facility = 'HQ' AND 
    Urgency = CASE WHEN @Priority = 'All' THEN Urgency 
        ELSE @Priority END 
+0

Wow..simple。感谢mxix! – Sung