Obtenir Min et Max en fonction des valeurs calculées dans une table

Je sélectionne certaines lignes d'une table temporaire, # t1, que j'ai créée:

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 

Je voudrais créer deux lignes de plus qui représentent le MIN (Prix) et le MAX (Prix) pour lesquels CumulativePercentile est supérieur à 0.3 (30ème percentile), mais les seules façons de le faire impliquent la création d'une autre table temporaire. Je préférerais ne pas avoir à le faire, si possible. Des idées?

MODIFIER:

 ;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 

Si vous êtes sur SQL Server 2005 ou supérieur, un CTE devrait aider

 ;with z as (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 ) select (select min(price) from z Z1 where Z1.CumulativePercentile > 0.3 and Z1.FutContract = z.FutContract) min_price, (select max(price) from z Z1 where Z1.CumulativePercentile > 0.3 and Z1.FutContract = z.FutContract) max_price, * from z