1
내가 임시 테이블, #의 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 (가격) 및 MAX (가격)이지만 다른 임시 테이블을 만드는 것이 유일한 방법입니다. 나는 가능하면하지 않는 것을 선호합니다. 어떤 아이디어?
편집 : 당신은 SQL 서버 2005 이상에있는 경우
;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
도움이 될 것입니다. 그러나 하위 쿼리가 1 개 이상의 값을 반환했기 때문에 오류가 발생합니다. 각 FutContract마다 min 및 max의 각 값이 고유해야하지만 몇 가지 FutContract 및 Price 조합이 있습니다. 방금 시도한 코드에서 편집했습니다. – weskpga
@weskpga, 귀하의 요구 사항을 100 % 이해하고 있지만 편집 된 답변을 살펴보십시오. – iruvar
그래, 편집 된 코드가 필요한 것입니다. 고맙습니다! – weskpga