需要更正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
请帮帮我。
试试这个:
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;