2012-10-23 7 views
3

나는 다음과 같은 임시 테이블의 구조를 가지고 :새 값으로 임시 테이블의 열을 업데이트

CREATE TABLE #TempTable ( 
    ID INT, 
    CId TINYINT, 
    TagId INT, 
    Beginning_X DECIMAL(18,5), 
    Beginning_Y DECIMAL(18,5), 
    Ending_X DECIMAL(18,5), 
    Ending_Y DECIMAL(18,5)) 

INSERT INTO #TempTable (ID, CId, TagId, Beginning_X, Beginning_Y) 
SELECT ID, CId,TagId, X, Y 
    FROM Table_1 
WHERE IsRepeat = 1 

INSERT INTO #TempTable(Ending_X, Ending_Y) 
SELECT X,Y 
    FROM Table_1 t 
WHERE t.ID IN (SELECT ID+1 
        FROM Table_1 
       where IsRepeat = 1)) 

두 번째 삽입 첫 삽입 문에서 모든 값을 제거하고 난 이유를 알아낼 수 없습니다. 두 번째 삽입의 결과를 첫 번째 삽입에 추가하고 단색 테이블을 하나 만들고 싶습니다.

편집 : 나는 해결책을 찾을 생각 :

UPDATE t 
SET t.Ending_X = p.X, t.Ending_Y = p.Y 
FROM #TempTable t, Table_1 p 
WHERE p.ID IN (SELECT ID+1 FROM Table_1 where IsRepeat = 1) 
AND p.ID-1 = t.ID 
+0

는 소리 필요가 있다고 생각 두 쿼리를 unioning에 대한 두 번째 삽입물로 'UPDATE'하십시오. 권리? 아니면 정말로 새로운 행을 원하십니까? –

+0

새 행이 없습니다. 다른 UPDATE 문을 시도했지만 어디에도 가지 않습니다. – Mellonjollie

답변

4

난 당신이 당신이 원하는 것 같은이

UPDATE t 
SET Ending_X = X, Ending_Y = Y 
FROM #TempTable t 
WHERE t.ID IN (SELECT ID+1 FROM Table_1 where IsRepeat = 1)) 
+0

당신은 나를 옳은 길에 올려 놓았습니다. – Mellonjollie

1

어떻게

INSERT INTO #TempTable (ID, CId, TagId, Beginning_X, Beginning_Y) 
SELECT ID, CId,TagId, X, Y 
from Table_1 
WHERE IsRepeat = 1 
    UNION 
SELECT Convert(Null, int) AS ID, Convert(Null, tinyint) AS CId, 
    Convert(Null, int) AS TagId, X,Y 
FROM Table_1 t 
WHERE t.ID IN (SELECT ID+1 FROM Table_1 where IsRepeat = 1)) 
관련 문제