这是我的情况,我有一个名为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个条目。我想要做的就是使相同的location_id的所有sitenums具有相同的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
例如,如果特许经营权为“F”,5522005的所有网站应为1101,如果特许经营权为1102,则为1102。我有2个单独的桌子,其中所有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特许经营权增加的网站,其位置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 :(得分:0)
根据代码判断,你将两次递增@NewSiteNum。在SELECT @NewSiteNum = MAX(SiteNum)+1
和SET SITENUM = SELECT @NewSiteNum, @NewSiteNum = @NewsiteNum + 1
这就是1103,1108,1109的来源。您有1101递增两次到1103,1106递增两次到1108等等。
你能解释一下为什么要增加它们吗?我不确定我是否误读了你的问题,但在我看来,你只是想做一种查找,比较和替换,而不是增加任何东西。