2013-10-04 2 views
0

이것은 내 포럼의 다른 답변에서 수정 한 코드입니다. 그것은 나에게 말하고 그러나 그 " "메시지 102, 수준 15, 상태 1, 줄 4 근처의 구문이 잘못되었습니다 '('. "SQL : 한정자가 같은 이전 행과 비교 한 값의 변화를 계산해야합니다.

내가 SQL에 새로운 오전 나는 그것이 될 것 고정 오류에게 어떤 도움을 찾을 수 없습니다 크게 감사

. "cteMain : 나는 그 또는 무엇을 참조하고 무엇을 잘 모릅니다, VieClaimTrans 함께 일하고 모든 정보 메신저가 저장되는 곳이다 TrnClaimTrans의 도면이다."

WITH cteMain AS 

(SELECT sn.ClientID , sn.FileNo, sn.ClaimNo, sn.TransEstimate, sn.TransType, ROW_NUMBER() OVER (PARTITION BY sn.TransType, sn.ClientID, sn.FileNo, sn.ClaimNo ORDER BY sn.ClientID, sn.FileNo, sn.ClaimNo) 
FROM VieClaimTrans AS sn) 

SELECT m.ClientID, m.FileNo, m.ClaimNo, m.TransType, 
    ISNULL(sLag.TransEstimate, 0) AS prevEstimate, 
    (m.TransEstimate - ISNULL(sLag.TransEstimate, 0)) AS movement 
FROM TrnClaimTrans AS m 

LEFT OUTER JOIN cteMain AS sLag 
ON sLag.ClientID = m.ClientID 
AND sLag.FileNo = m.FileNo 
AND sLag.ClaimNo = m.ClaimNo 
AND sLag.sn = m.sn-1 

+0

후 변수 이름을 --add 응원한다 이 부분의 테이블에서 :'m.sn-1'. –

답변

0

쉼표가 누락되었습니다. ROW_NUMBER()

;WITH cteMain AS 

(SELECT sn.ClientID , sn.FileNo, sn.ClaimNo, sn.TransEstimate, 

이에게 알려줄, ROW_NUMBER() 전에 쉼표를 추가

sn.TransType, ROW_NUMBER() OVER (PARTITION BY sn.TransType, sn.ClientID, 
sn.FileNo,sn.ClaimNo ORDER BY sn.ClientID, sn.FileNo, sn.ClaimNo) '[ROWNAME]' 

는 ROW_NUMBER()는 1을 뺀 있습니다

FROM VieClaimTrans AS sn) 

SELECT m.ClientID, m.FileNo, m.ClaimNo, m.TransType, 
ISNULL(sLag.TransEstimate, 0) AS prevEstimate, 
(m.TransEstimate - ISNULL(sLag.TransEstimate, 0)) AS movement 
FROM TrnClaimTrans AS m 

LEFT OUTER JOIN cteMain AS sLag 
ON sLag.ClientID = m.ClientID 
AND sLag.FileNo = m.FileNo 
AND sLag.ClaimNo = m.ClaimNo 
AND sLag.sn = m.sn-1 
+0

변경했습니다. "메시지 8155, 수준 16, 상태 2, 줄 1 'TrnClaimTrans'의 열 6에 대해 열 이름이 지정되지 않았습니다." –

+0

업데이트 됨, row_number() 뒤에 열 이름이 누락되었습니다 –

+0

고마워요. 그러나 Partition 문에서 TransType을 제외한 모든 것을 제거하여 원하는대로 작동하게했습니다. 도와 주셔서 감사합니다. –

관련 문제