我试图连接两个表ORDER和ORDER_FLG。我想从ORDER中取出ORDER_FLG表中没有Flg为'Y'的所有列。左连接 - 连接两个表并从左表中拉出所有数据
ORDER
Branch_nbr |Order_Id | Order_start_dt |Order_end_dt
0001 | 110000 | 01/01/2014 | 02/02/2014
0002 | 110001 | 03/03/2014 | 04/04/2014
0003 | 110002 | 05/05/2014 | 06/06/2014
ORDER_FLG
Branch_Nbr |Order_Id |Flg
0001 | 110000| Y
0003 | 110002| N
SQL:
SELECT A.*
FROM ORDER AS A LEFT JOIN ORDER_FLG AS B
ON A.Branch_nbr=B.Branch_nbr AND A.Order_Id=B.Order_Id
WHERE A.Order_start_dt >= 'SOME_DATE'
AND A.Order_end_dt <= 'SOME_DATE'
AND B.Flg <> 'Y'
我应该得到两行(110002,110001)的输出,但我得到的只有一个。如果第二个表中不存在条目,则数据不会从第一个表中提取。不应该从第一个表中拉出所有数据?
我尝试这样做,它的工作原理,但需要时间 -
SELECT A.*
FROM ORDER AS A
WHERE A.Order_start_dt >= 'SOME_DATE'
AND A.Order_end_dt <= 'SOME_DATE'
AND A.Order_Id NOT IN (SELECT Order_Id FROM ORDER_FLG
WHERE Order_Id=A.Order_Id AND Branch_nbr=A.Branch_nbr
AND Flg='Y')
嗨。任何答案都有帮助吗?如果是的话,你应该接受它:) – PawelP 2014-09-13 11:34:05