作成した一時テーブル #t1 からいくつかの行を選択しています。
SELECT FutContract,
Quantity,
Date,
Price,
TotalQuantity,
PercentOfTotalQ,
CumulativePercentile=
(SELECT ROUND(SUM(PercentOfTotalVol),2) FROM #t1 b
WHERE b.OvernightVol <= a.OvernightVol AND b.FutContract = a.FutContract)
FROM #t1 a
CumulativePercentile が 0.3 (30 パーセンタイル) より大きい MIN(Price) と MAX(Price) を表す行をさらに 2 つ作成したいと考えていますが、考えられる唯一の方法は、別の一時テーブルを作成することです。できれば無い方がいいです。何か案は?
編集:
;WITH z AS
(SELECT FutContract, OvernightVol, MorningDate, Price, TotalVol,
PercentOfTotalVol, CumulativePercentile=
(SELECT ROUND(SUM(PercentOfTotalVol),2) FROM #t1 b
WHERE b.OvernightVol <= a.OvernightVol AND b.FutContract = a.FutContract) FROM #t1 a)
SELECT *,
(SELECT MIN(Price) OVER(PARTITION BY FutContract) FROM z WHERE CumulativePercentile > 0.3) AS min70px,
(SELECT MAX(Price) OVER(PARTITION BY FutContract) FROM z WHERE CumulativePercentile > 0.3) AS max70px
FROM z