2017-10-23 2 views
-1

아래 쿼리를 작성한 후 마지막 행에 1000이라는 초기 값을 가진 다른 열을 작성하려고 시도한 후 원래 1000을 mdp.DataPointValue로 곱한 다음 이니셜 1000은 새로 계산 된 값을 사용합니다.이전에 계산 된 행 레코드를 기반으로 한 SQL 곱하기

예를 들어, 5/25/10에 시작 값을 1000으로 지정하고 싶습니다. 5/26/10에 mdp.DataPointValue * 이전 값 (첫 번째 값은 1000)이므로 에.

SELECT AsOfDate, mdp.DataPointValue, 
     1000 * exp(sum(log(mdp.DataPointValue)) over (order by AsOfDate)) 
FROM DataPointPITs mdp 
WHERE mdp.DataPointId = '2710' AND AsOfDate > '2010-05-25' 
ORDER BY AsOfDate DESC; 

답변

0

, 당신은 SUM() 및 산술 연산을 사용하여 누적 제품을 할 수있는 주시면 감사하겠습니다 like for job LAG()

SELECT  AsOfDate, 
       mdp.DataPointValue, 
       mdp.DataPointValue * LAG(mdf.DataPointValue, 1, 1000) OVER (ORDER BY AsOfDate DESC) 
FROM   DataPointPITs AS mdp 
WHERE  mdp.DataPointId = '2710' AND AsOfDate > '2010-05-25' 
ORDER BY  AsOfDate DESC 

놀라운 창작 기능 세계에 오신 것을 환영합니다.

+0

이전 열 * DPValue가 아닌 열 이름이 어디인지 찾는 데 필요하지만 5/25/10으로 시작해야합니다. 1000 * AsOfDate DataPointValue (열 이름 없음) * 6/1/2,010 0.81 * 0.934 1059.144652 1307.58599 /2천10분의 28 5 * 1.327 1399.985 /2,010분의 27 5 * 26// 2,010 1.055 1,055 * 5/25/2010 0.951 1000 @ djk11 – djk11

+0

5. . . 이게 뭐지? –

+0

@ djk11 . . 나는 대답을 고쳤다. SQL Server는'log()'함수를 호출합니다. –

1

이 소리 : 어떤 도움이 많이 값이 항상 긍정적 (절대 제로 또는 마이너스)하고 틈이없는 가정

SELECT  AsOfDate, 
       mdp.DataPointValue 
FROM   DataPointPITs AS mdp 
WHERE  mdp.DataPointId = '2710' AND AsOfDate > '2010-05-25' 
ORDER BY  AsOfDate DESC 
+0

이전 열 * DPValue가 아닌 열 이름이 어디인지 찾는 데 필요하지만 1000으로 5/25/10부터 시작해야 함 AsOfDate DataPointValue (열 이름 없음) * 6/1/2010 0.81 1059.144652 * 5/28/2010 0.934 1307.58599 * 5/27/2010 1.327 1399.985 * 5/26/2010 1.055 1055 * 5/25/2010 0.951 1000 – djk11

관련 문제