그래서이 SQL 테이블을 업데이트해야합니다. 이제 우리는 도구를 사용하여 프로세스를 수행합니다. 따라서 열의 이름을 변경 한 후에는 도구가 이전 열을 삭제하고 새로운 열을 새 이름으로 추가하기 때문에 수동으로 처리해야합니다. 이 코드를 빌드에 포함하고 빌드에서 테이블을 제외하십시오.CASE 문이 포함 된 SQL UPDATE에 대한 질문
우리가 현재 가지고있는 테이블에는 'FeeTypeId'라는 열이 있습니다. 우리는 유형과 설명과 관련된 ID 묶음이있는 다른 테이블 인 조회 테이블을 가지고 있습니다. 앞서 언급 한 다른 테이블의 이전 'FeeTypeId'필드에 특정 'FeeDescription'과 관련된 LookupId가 포함되기를 원합니다. 매핑이 포함 된 Excel 시트가 있으므로 지금 당장은 실제 데이터가없고 논리 만 있습니다.
내가 작성한 스크립트는 다음과 같습니다. 그러나 실행 여부는 알 수 없습니다. 너희들이 나를 도와 줄 수 있니?
----------------------------------------------------------------------
--PRE_UPGRADE--
----------------------------------------------------------------------
CREATE TABLE dbo.TmpFeesToRules(OldValue varchar, NewValue varchar)
--populate with values from Excel
----------------------------------------------------------------------
--POST UPGRADE--
----------------------------------------------------------------------
UPDATE Lending.ApplicationFee
SET FeeTypeId =
CASE t.NewValue
WHEN <> null THEN (SELECT LookupID FROM tblLookup WHERE LookupType = 'FEE_CODE' AND LookupDesc = t.NewValue)
ELSE (SELECT LookupID FROM tblLookup WHERE LookupType = 'FEE_CODE' AND LookupCode = 'OTHER') END
-- else might change, might not even need an else
FROM TmpFeesToRules t INNER JOIN tblLookup l ON t.NewValue = l.LookupDesc
-- Drop the tmp table
DROP TABLE dbo.TmpFeesToRules
이 허용 저장 프로 시저에서이 작업을 수행하는 것입니다, 그래서 당신은 먼저 (이 경우 문을 사용하여)에 값을 할당 변수에, 그 다음을 사용을 만들 수 있습니다 최신 정보? 그러면 코드의 가독성이 크게 향상됩니다. – Rob
나는 소원한다. 이것은 빌드하는 방식 때문에 수행 할 수있는 유일한 방법입니다. 그들은 실제 데이터베이스에 추가 된 것을 원하지 않습니다. 그렇지 않으면 아마 모든 새 데이터를 가진 다른 테이블을 만들 것입니다. 그런 다음 오래된 데이터를 삭제하는 빌드에는 아무런 문제가 없습니다. 그럼 나는 그것을 복사 할 것입니다. – Scott