2014-11-05 118 views
0

我想在我的SQL代码中包括一个条件where语句,我不确定如何做到这一点...目前它看起来像这样(见下文),虽然我是相当肯定我在这里走错了方向。包括一个条件SQL where语句

 WHERE 
    [awb_prefix] in ('403','369') 
    AND [agent_iata_code] NOT IN ('0508634') 
    AND [yr] = 2014 
    AND CASE WHEN [awb_prefix] = '369' THEN [origin_gw_carrier] in ('PO','9S','K4') ELSE [origin_gw_carrier] in ('PO','9S','K4','5Y') 
    END 
+1

您是否尝试过执行它?此外,这是一个非常受欢迎的问题... – Andrew 2014-11-05 17:23:13

回答

4

那不是CASE是。您可以尝试这样做:

WHERE [awb_prefix] in ('403','369') 
AND  [agent_iata_code] NOT IN ('0508634') 
AND  [yr] = 2014 
AND 
(
    ([awb_prefix] = '369' AND [origin_gw_carrier] in ('PO','9S','K4')) 
OR ([awb_prefix] <> '369' AND [origin_gw_carrier] in ('PO','9S','K4','5Y')) 
) 
+0

非常感谢!这工作完美,我没有意识到你可以使用括号来配对过滤器语句。 – Moehling 2014-11-05 17:49:06

3

取而代之的case使用

AND 
(
    [origin_gw_carrier] in ('PO','9S','K4') AND [awb_prefix] = '369' OR 
    [origin_gw_carrier] in ('PO','9S','K4','5Y') 
)