【问题标题】:Condition for JOIN query needs to be corrected需要更正 JOIN 查询的条件
【发布时间】:2013-03-14 14:59:24
【问题描述】:

我的表结构如下:

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 和 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

请帮帮我。

【问题讨论】:

  • TradeNo 和 OrderNo 是唯一组合,不会有 2 条记录组合相同!
  • 是的,我的数据库中有两条具有相同组合的记录

标签: c# sql database sql-server-2005 join


【解决方案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 Fiddle Demo

【讨论】:

  • 当我设置到期日期条件时它不起作用>>t1.Sauda_Date
  • @Freelancer - 您可以将其放在子查询或外部查询中。 Like this
猜你喜欢
  • 2021-07-22
  • 2013-12-08
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多