Office中国论坛/Access中国论坛

标题: 如何实现用表1生成新表2,表2在原表1的基础上增加了一个字段(typeid),该字段值是根据 [打印本页]

作者: kevinch    时间: 2006-4-27 19:35
标题: 如何实现用表1生成新表2,表2在原表1的基础上增加了一个字段(typeid),该字段值是根据
如何实现用表1生成新表2,表2在原表1的基础上增加了一个字段(typeid),该字段值是根据字段jnumber和contype自动编号.
要求:jnumber不存在相同值时,typeid为1
        jnumber存在相同值,但contype不同时,typeid为1
        jnumber存在相同值,contype也存在相同时,typeid从1开始自动编号.
请看例表
表1(jnumber,contype)                        表2(jnumber,contype,typeid)
jnumber    contype                                 jnumber    contype     typeid
a                      40                                  a                      40           1         
a                      45                                  a                      45           1
a                      20                                  a                      20           1

b                      40                                  b                      40           1
b                      40                                  b                      40           2
b                      45                                  b                      45           1
b                      40                                  b                      40           3

c                      40                                  c                      40           1
c                      20                                  c                      20           1
c                      20                                  c                      20           2
c                      45                                  c                      45           1


作者: kevinch    时间: 2006-4-27 20:21
救命呀,在线等.
作者: kevinch    时间: 2006-4-27 21:22
还没人回话呀,大侠们,帮忙想想呀.谢先.
作者: wwwwa    时间: 2006-4-27 23:04
增加辅助列,为自增字段

SELECT (iif((select count(*) from b105p where a.jnumber=jnumber and a.contype=contype)=1,1,
(select count(*) from b105p where a.jnumber=jnumber and a.contype=contype and a.id>id)+1)) AS typeid, *
FROM b105p AS a;

作者: kevinch    时间: 2006-4-27 23:37
谢谢4w的帮忙,我很菜的,还是不怎么明白,我上传个原表1,你帮帮忙弄个表2出来吧.
好人做到底.谢谢啦.[attach]17434[/attach]

作者: 一点通    时间: 2006-4-27 23:48
将下面的语句直接复制到新建的查询中

SELECT (IIf((select count(*) from table1 where a.jnumber=jnumber and a.contype=contype)=1,1,(select count(*) from table1 where a.jnumber=jnumber and a.contype=contype and a.id>id)+1)) AS typeid, * INTO table2
FROM table1 AS a;

作者: wwwwa    时间: 2006-4-27 23:49
在查询中输入SQL代码:

SELECT (iif((select count(*) from table1 where a.jnumber=jnumber and a.contype=contype)=1,1,
(select count(*) from table1 where a.jnumber=jnumber and a.contype=contype and a.id>id)+1)) AS typeid, *
FROM table1 AS a;



作者: wwwwa    时间: 2006-4-27 23:51
SELECT (iif((select count(*) from table1 where a.jnumber=jnumber and a.contype=contype)=1,1,
(select count(*) from table1 where a.jnumber=jnumber and a.contype=contype and a.id>id)+1)) AS typeid, * into newtable
FROM table1 AS a

作者: kevinch    时间: 2006-4-27 23:52
终于搞定,谢谢两位大师的帮忙.谢谢!谢谢!谢谢!
作者: kevinch    时间: 2006-4-28 00:01
能否解释一下这条sql语句?看不明白.




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3