0

我的表结构如下:

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 组合的记录 [Like 1st and 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 对于这些行是唯一的,并且根据买入卖出和 sauda 日期在到期日内。

我尝试了以下查询,但没有奏效:

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

请帮我。

4

1 回答 1

1

试试这个:

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 小提琴演示

于 2013-03-25T07:22:23.487 回答