2009-10-08 6 views
0

이것은 나에게 큰 문제이며이 문제를 논의하기에는 너무 단순한 것처럼 보이지만 과장 될 수 있습니다. 그것은 SQL에 있습니다.동일한 테이블의 다른 필드 값을 기반으로 필드 업데이트

SITENUM  LOCATION_ID   FRANCHISE 
1101   5522005    R 
1101   5522005    F 
1102   5522005    R 
1102   5522005    F 

1103   5522006    R 
1103   5522006    F 
1104   5522006    R 
1104   5522006    F 

이 같은이 테이블에 대한 3204 항목이 있습니다 : 여기

다음과 같이 내가 Monthly_Hierarchy라는 테이블을 가지고, 내 상황입니다. 내가 간단하게하고자하는 것은 동일 franchise_type을 갖는 동일한 location_id에 대한 모든 sitenum을 동일하게 만드는 것입니다.

그래서, 수정 후, 내 표는 이상적으로 다음과 같아야합니다.에 대한 전

SITENUM  LOCATION_ID   FRANCHISE 
1101   5522005    R 
1102   5522005    F 
1101   5522005    R 
1102   5522005    F 

1103   5522006    R 
1104   5522006    F 
1103   5522006    R 
1104   5522006    F 

따라서는, 5522005에 대한 모든 sitenums 1101해야 프랜차이즈가 'F'이고 1102 경우 프랜차이즈가 1102 인 경우 나는 모든 F 프랜차이즈의 위치 및 위치와 2 개의 별개의 테이블을 보유하고 있으며 모든 R 프랜차이즈에도 동일하게 적용됩니다. 현재 내 코드는 다음과 같습니다 : 난 그냥 내 현재 코드로 최종 테이블에 내 원래 테이블에서 가져 오는 방법을 알아낼 수 없습니다

BEGIN TRANSACTION 
    DECLARE @NewSiteNum int 
    SELECT @NewSiteNum = MAX(SiteNum)+1 FROM [Monthly Hierarchy Table] 

    UPDATE Monthly_Hierarchy 
    SET SITENUM = SELECT @NewSiteNum, 
     @NewSiteNum = @NewSiteNum + 1 
    FROM Monthly_Hierarchy m 
     JOIN F_hierarchy f 
     on m.location_id = f.location_id 
    where m.franchise='f' 
END 

    UPDATE Monthly_Hierarchy 
    SET SITENUM = R.sitenum 
    FROM Monthly_Hierarchy m 
     JOIN R_hierarchy r 
     on m.location_id = r.location_id 
    where m.franchise='R' 

.

SITENUM  LOCATION_ID   FRANCHISE 
1101   5522005    R 
1106   5522005    F 
1101   5522005    R 
1107   5522005    F 

1103   5522006    R 
1108   5522006    F 
1103   5522006    R 
1109   5522006    F 

어떻게이 문제를 해결하고 모든 균일하게받을 수 있나요 다음과 같이 내가 뭘 계속 같은 위치 ID에 대한 F 프랜차이즈에 대한 sitenums을 증가하기? 어떤 도움이라도 대단히 감사하겠습니다.

답변

0

코드로 판단하면 @NewSiteNum이 두 번 증가합니다. 한 번 위로 올라간다 SELECT @NewSiteNum = MAX(SiteNum)+1 그리고 다시 SET SITENUM = SELECT @NewSiteNum, @NewSiteNum = @NewsiteNum + 1

그것은 1103, 1108, 1109가 어디에서 왔는지입니다. 1103을 1101로 두 번 증가시키고 1106을 1108로 두 번 증가시키는 등의 작업을 수행 할 수 있습니다.

왜 증가시키는 지 설명 할 수 있습니까? 나는 당신의 질문을 오독하고 있는지 잘 모르겠다. 그러나 당신이 일종의 조회 만하고, 어떤 것을 증가시키는 대신 비교하고 교체하기를 원하는 것처럼 보인다.

+0

그것이이 테이블의 구조이기 때문에 증가해야합니다. 이 테이블에 삽입 된 새로운 항목은 테이블의 최대 (sitenum)부터 시작하여 자동으로 1 씩 증가하는 sitenum을가집니다. 내가 끝내 었다고 생각하기 전에 나의 코드는 매력처럼 작동했지만, 나는 sitenum = sitenum + 1000을 만들고 있었고 겹치는 부분이 없었다. 이제는 sitenum을 현재 사용중인 것으로 업데이트하는 것을 막기 위해 1 씩 증가합니다. max (sitenum)로 시작해야합니다. 문제는 location_id가 변경 될 때 sitenum 만 증분시켜야하므로 location_id를 자체에 가입시켜야 할 수도 있습니다. – Sonal

관련 문제