私は次のクエリを書きました
サンプルクエリ
USE SampleDB
SELECT Sec.SecurityID, Port.PortfolioCode, Sec.SymbolNameSpace, Sec.Symbol,
PT.TradeAmount, PT.tradedate, PT.settledate, PT.PostDate, PT.TransactionCode,
PT.SecurityID1
FROM AdvApp.vPortfolioTransaction PT
LEFT OUTER JOIN
AdvApp.vPortfolio PORT
ON Port.PortfolioID = PT.PortfolioID
LEFT OUTER JOIN
AdvApp.vSecurity Sec
ON Sec.SecurityID = PT.SecurityID1
WHERE Sec.SecurityID = 4678 or Sec.SecurityID = 6
ORDER BY PT.TradeAmount
目的の結果セット
SecurityID PortfolioCode SymbolNameSpace Symbol TradeAmount tradedate settledate PostDate TransactionCode SecurityID1
4678 pendingtest caus pending 368,456.00 5/21/2013 NULL 5/21/2013 lo 4678
6 pendingtest caus cash 368,456.15 5/22/2013 NULL 5/23/2013 lo 6
4678 pendingtest caus pending 7,800.00 4/17/2013 NULL 5/21/2013 lo 4678
6 pendingtest caus cash 7,801.00 4/23/2013 NULL 5/23/2013 lo 6
サンプルの実際の結果セット
SecurityID PortfolioCode SymbolNameSpace Symbol TradeAmount tradedate settledate PostDate TransactionCode SecurityID1
6 pendingtest caus cash 240,453.70 7/16/2010 NULL 7/19/2010 lo 6
6 pendingtest caus cash 249,562.32 1/19/2012 1/19/2012 1/20/2012 dp 6
6 pendingtest caus cash 368,456.15 5/22/2013 NULL 5/23/2013 lo 6
6 pendingtest caus cash 250,000.00 12/1/2003 NULL 12/1/2003 lo 6
6 pendingtest caus cash 250,321.13 11/15/2010 11/15/2010 11/16/2010 dp 6
6 pendingtest caus cash 365,445.58 1/31/1999 NULL 3/26/1999 dp 6
4678 pendingtest caus pending 368,456.00 5/21/2013 NULL 5/21/2013 lo 4678
4678 pendingtest caus pending 7,800.00 4/17/2013 NULL 5/21/2013 lo 4678
6 pendingtest caus cash 7,801.00 4/23/2013 NULL 5/23/2013 lo 6
ロジックは、行のペアが +/- 5 以内の取引金額に一致するテーブル行のみを表示することです。また、SecurityID1 値が 4678 と 6 の組み合わせである行のみを表示することも必要です。ペアには、SecurityID1 である 1 つの行が常に含まれます。 4678 で、もう一方の行は SecurityID1 6 です。
トランザクションをペアにする方法を広範囲に検索しましたが、+/- 5 の許容範囲内で同様の値を許可する方法の例が見つかりません