2009-10-08 168 views
0

這對我來說是一個很大的問題,它似乎太簡單,無法討論此問題,但是我可能會過度複雜化它。它在SQL中。根據同一個表中另一個字段的值更新字段

這裏是我的情況,我有一個名爲Monthly_Hierarchy表如下:

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項。我想簡單地做的是讓所有的sitenums爲相同的location_id具有相同的franchise_type,相同。

因此,修改後,我的表應該最好是這樣的:

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特許經營店都有地點和地點,所有的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' 

我只是無法弄清楚如何從我的原始表進入決賽桌與我當前的代碼。什麼我不斷收到遞增適用於F專營權sitenums同一地點ID如下:

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 

我如何解決這個問題,並讓他們全部統一?任何幫助將不勝感激。

回答

0

通過代碼判斷,您將增加@NewSiteNum兩次。一旦在SELECT @NewSiteNum = MAX(SiteNum)+1的頂部和SET SITENUM = SELECT @NewSiteNum, @NewSiteNum = @NewsiteNum + 1

這就是1103,1108,1109來自哪裏。你有1101遞增兩次到1103,1106兩次遞增到1108等。

你能解釋一下爲什麼要增加它們嗎?我不確定我是否誤讀了你的問題,但在我看來,你只是想做一些查找,比較和替換而不是增加任何東西。

+0

我必須增加,因爲這是這張表的結構。插入到此表中的任何新條目都將以其最大值(sitenum)開始自動遞增1。我的代碼在我認爲完成之前像一個魅力一樣工作,但是我使sitenum = sitenum + 1000,並且沒有重疊。現在,我正在遞增1,以防止將sitenum更新爲當前正在使用的sitenum,我必須從max(sitenum)開始。 問題是,我可能必須將location_id加入自身,所以我應該只在location_id更改時增加sitenum。 – Sonal 2009-10-08 13:49:28

相關問題