需要更正JOIN查询的条件

本文关键字:查询 条件 JOIN | 更新日期: 2023-09-27 18:05:33

我的表结构如下:

TradeNo | OrderNo | Buy_Sell | Trade_Qty | Market_Rate | Sauda_Date    | Expiry_Date
 1001      2001      Buy        100          5000       28 Feb 2013         2013-03-29 
 1002      2002      Buy        500          8000       28 Feb 2013         2013-03-29 
 1001      2001      Sell       70           5600       1 Mar 2013          2013-03-29 

对于每一行,TradeNo和OrderNo是唯一的组合。

我想选择所有具有唯一TradeNo和OrderNo组合的记录[如1st和3rd],其中Sauda_Date可能不同,但在Expirydate内并根据买入/卖出。

从这个示例中,应该选择以下行:

TradeNo | OrderNo | Buy_Sell | Trade_Qty | Market_Rate | Sauda_Date    | Expiry_Date
     1001      2001      Buy        100          5000       28 Feb 2013         2013-03-29 

     1001      2001      Sell       70           5600       1 Mar 2013          2013-03-29 

选择这些行是因为Tradeno和OrderNo对于这些行是唯一的,并且根据买卖和交易日期在到期日期内。

我已经尝试了以下查询,但它没有工作:

select
    t1.TradeNo,
    t1.OrderNo,
    t1.Trade_Qty,
    t1.Market_Rate,
    t1.Sauda_Date,
    t1.Expirydate
from 
    tradeFile t1,
    tradeFile t2 
where 
    t1.TradeNo=t2.TradeNo and
    t1.OrderNo=t2.OrderNo

请帮帮我。

需要更正JOIN查询的条件

试试这个:

SELECT  t1.*
FROM tradeFile t1
INNER JOIN
(
    SELECT TradeNo, OrderNO
    FROM tradeFile
    GROUP BY TradeNo, OrderNO
    HAVING COUNT(*) > 1 
) AS t2  ON t1.TradeNo = t2.TradeNo
        AND t1.OrderNo = t2.OrderNO;

SQL Fiddle Demo