這對我來說是一個很大的問題,它似乎太簡單,無法討論此問題,但是我可能會過度複雜化它。它在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
我如何解決這個問題,並讓他們全部統一?任何幫助將不勝感激。
我必須增加,因爲這是這張表的結構。插入到此表中的任何新條目都將以其最大值(sitenum)開始自動遞增1。我的代碼在我認爲完成之前像一個魅力一樣工作,但是我使sitenum = sitenum + 1000,並且沒有重疊。現在,我正在遞增1,以防止將sitenum更新爲當前正在使用的sitenum,我必須從max(sitenum)開始。 問題是,我可能必須將location_id加入自身,所以我應該只在location_id更改時增加sitenum。 – Sonal 2009-10-08 13:49:28