0
이것은 내게 조금 어려운 말입니다. 내 문제의 단순화 된 버전을 설명하겠습니다. 나는 두 개의 테이블, 소스와 대상을 가지고TSQL CASE와 함께 여러 열을 업데이트하지만 값에 따라
CREATE TABLE AMG_TDest(
ID INT,
Value1 INT,
Value2 INT,
Value3 INT,
Value4 INT)
CREATE TABLE AMG_TSource(
ID INT,
RowNumber INT,
Value INT)
INSERT INTO AMG_TDest VALUES (1, 0, 0, 0, 0), (2, 0, 0, 0, 0)
INSERT INTO AMG_TSource VALUES (1, 1, 1), (1, 2, 2), (1, 3, 3), (1, 4, 4), (2, 1, 10), (2, 2, 20), (2, 3, 30), (2, 4, 40)
내가 TSource.RowNumber에 따라 대상 테이블에 값 1, 값, VALUE3 및 VALUE4를 업데이트합니다. 결국
내가 무엇을 결과로 얻을 싶은 것은이 대상 테이블에 :ID V1 V2 V3 V4
1 1 2 3 4
2 10 20 30 40
내가
UPDATE AMG_TDest
SET
Value1 = CASE WHEN S.RowNumber = 1 THEN COALESCE(S.Value, 0) ELSE Value1 END,
Value2 = CASE WHEN S.RowNumber = 2 THEN COALESCE(S.Value, 0) ELSE Value2 END,
Value3 = CASE WHEN S.RowNumber = 3 THEN COALESCE(S.Value, 0) ELSE Value3 END,
Value4 = CASE WHEN S.RowNumber = 4 THEN COALESCE(S.Value, 0) ELSE Value4 END
FROM (SELECT * FROM AMG_TSource) AS S
INNER JOIN AMG_TDest D ON D.ID = S.ID
그냥 처음부터 값 1을 업데이트합니다 (일부 변동 포함)이 시도 행과 마지막 행의 값 4. 나는 몇 시간 동안 이걸로 싸우고 있었고 나는 그것을 작동하게 만들 수 없다. 누구든지 제안을하면 정말 감사합니다.
좋아요! 그것은 작동합니다. 원래의 USP에서 성능 문제가 있는지 확인하겠습니다. 나는 많은 기둥을 가지고 있고 그것은 조금 킬로미터이다. –
나는 기쁘게 도와 준다. –