我有一个名为Game的表,其结构如下:
[Game_Name] [Publisher]
表中的数据如下所示:
[Game_Name] [Publisher]
1
3
1
2
2
1
3
Game_Name将为空白。这样,我想基于发布者列的值来更新Game_Name的值。
这应该如何工作:
如果对于Publisher列为1的每个实例(行),发布者= 1->,则Game_Name将为GM-1,... GM-n。因此,在此示例中,存在3个发布者为1的实例。因此,值将为GM-1,GM-2,GM-3。
如果发布者= 2,与上述类似,则期望格式为1-1,... n-n。因此,由于我们有2个发布服务器为2的实例,所以Game_Name的值为GM-1-1,GM-2-2。
最后,如果Publisher = 3,Game_Name的值将为1-1-1,... n-n-n。这里有三个实例,因此Game_Name的值为GM-1-1-1,GM-2-2-2,GM-3-3-3。
这是我目前的做法
UPDATE Game
SET Game_Name =
SWITCH (Publisher = 1, "GM-"&[1+1],
Publisher = 2, "GM-"&[1+1]&"-"&[1+1],
Publisher = 3, "GM-"&[1+1]&"-"&[1+1]&"-"&[1+1])
我无法跟踪递增值以及何时重置。另外,这是否应该是宏。
感谢您的帮助。
答案 0 :(得分:0)
考虑:
SELECT ID, Publisher, "GM-" & Choose([Publisher],[GrpSeq],[GrpSeq] & "-" & [GrpSeq],[GrpSeq] & "-" & [GrpSeq] & "-" & [GrpSeq]) AS Game_Name
FROM (SELECT ID, Publisher, DCount("*","Game","Publisher = " & [Publisher] & " AND ID <" & [ID])+1 AS GrpSeq FROM Game) AS Q1;
请注意,这对于非常大的数据集可能会缓慢执行。在这种情况下,VBA方法可能更可取。如果发布者值明显多于3个,则VBA方法可能是唯一的选择。