2017-04-08 68 views
0

我使用一个查询来获取结果的GridView案例语句的WHERE子句

SELECT DISTINCT 
    Order_Header.Id, Order_Header.Payment_Id, Order_Header.Order_No 
FROM 
    Order_Header 
INNER JOIN 
    Order_Shipping_Detail ON Order_Header.Id = Order_Shipping_Detail.Order_Id 
LEFT OUTER JOIN 
    cod_orders ON cod_orders.Order_Id = Order_Header.Id 
WHERE 
    Status = 2 

不过,我需要返回所有的订单,其中状态= 2和订单,其中付款编号是鳕鱼(也状态= 2 )和cod_orders.Is_confirmed = 1。

我可以为此使用CASE语句吗?

但是,如果我尝试这样做,我正在实现我的结果。

SELECT DISTINCT Order_Header.Id, order_Header.Payment_Method_Id,Order_Header.Order_No 
FROM Order_Header INNER JOIN Order_Shipping_Detail 
ON Order_Header.Id = Order_Shipping_Detail.Order_Id 
LEFT JOIN cod_orders 
ON cod_orders.Order_Id = Order_Header.Id 
WHERE Status = 2 and Payment_Method_Id != 6 
UNION 
Select DISTINCT Order_Header.Id, order_Header.Payment_Method_Id,Order_Header.Order_No 
FROM Order_Header INNER JOIN Order_Shipping_Detail 
ON Order_Header.Id = Order_Shipping_Detail.Order_Id 
LEFT JOIN cod_orders 
ON cod_orders.Order_Id = Order_Header.Id 
WHERE Status = 2 AND cod_orders.Is_Confirmed = 1 

我可以将它们合并为一个查询吗?

+0

它是更好,如果你提供的样本数据和有关 –

+0

预期输出你的'WHERE'试图'CASE'声明? – Fabio

回答

0

我想你可以合并2个条件是这样

SELECT DISTINCT Order_Header.Id, Order_Header.Payment_Id,Order_Header.Order_No 
FROM Order_Header INNER JOIN 
    Order_Shipping_Detail 
    ON Order_Header.Id = Order_Shipping_Detail.Order_Id LEFT OUTER JOIN 
    cod_orders 
    ON cod_orders.Order_Id = Order_Header.Id 
WHERE Status = 2 and (Payment_Method_Id != 6 or cod_orders.Is_confirmed = 1) 
+0

它返回所有行 – user1377504

+0

@tnv我更新了我的问题。 – user1377504

+0

我编辑了我的答案... – TriV