2016-10-25 11 views
0

データベース内の各EntityCodeの最高のBIDと最低ASK(価格)の表が1つ必要です。ランクとパーティションを使用したSQL Server Joinクエリ

コードリターン次の2組の2つの結果セットIが、まだそれらを結合する方法を見つけ出す/見つけることができません。

落札

(SELECT * FROM  
    (SELECT 
     Contracts.Orders2Buy.EntityCode, 
     Contracts.Orders2Buy.Bid,  
     Contracts.Orders2Buy.NumContractsStillAvailable, 
     Contracts.Orders2Buy.TimePlaced, 
     RANK() OVER (PARTITION BY EntityCode 
       ORDER BY Contracts.Orders2Buy.Bid DESC, 
       Contracts.Orders2Buy.TimePlaced DESC) AS Rank 
    FROM 
     Contracts.Orders2Buy 
    WHERE 
     Contracts.Orders2Buy.NumContractsStillAvailable > 0) AS temp 
WHERE temp.Rank = 1) 

は最低が

(SELECT * FROM  
( SELECT 
     Contracts.Orders2Sell.EntityCode, 
     Contracts.Orders2Sell.Ask,   
     Contracts.Orders2Sell.NumContractsStillAvailable AS AskVolume, 
     Contracts.Orders2Sell.TimePlaced, 
     RANK() OVER ( PARTITION BY EntityCode  
       ORDER BY Contracts.Orders2Sell.Ask ASC, 
       Contracts.Orders2Sell.TimePlaced DESC) AS Rank 
    FROM 
     Contracts.Orders2Sell 
    WHERE 
     Contracts.Orders2Sell.NumContractsStillAvailable > 0) AS temp2 
WHERE temp2.Rank = 1) 
+2

この投稿は、テーブル対CTEから行ってきましたSQL ServerのコストとWebサーバーのコストについて何かを変えることはできますか? – dfundako

+0

私のアドバイス1)特定の質問をしてください。 2)あなたの関連コードを投稿してください。 – RBarryYoung

+0

ありがとう、私はまだこのフォーラムを初めて利用しています。 –

答えて

0
を依頼ゲット

UNIONの代わりに、JOINを使用して3つの結果セットを1つの結果に結合します。

SELECT * 
FROM highestBid hb 
     JOIN lowestAsk la ON hb.stock_symbol = la.stock_symbol 
     JOIN mostRecent mr ON la.stock_symbol = mr.stock_symbol 

は、私は何を達成しようとすると、次のように上記のコードブロックに参加する必要が*

0

の代わりに各セットから必要なフィールドを置く:

SELECT * FROM 

     (Code block 1) t1 

INNER JOIN 

     (Code block 2) t2 

ON t1.EntityCode = t2.EntityCode