倒是可以,但是Sql的效率可能不高。 select (select count(*) from tablename b where b.delptname = a.delptname and b.userid <=a.userid), userid,usename,delptname from tablename a
同意楼上的意见,加一点小小的改进: select (select count(*) from test1 b where b.delptname = a.delptname and b.userid <=a.userid) as indexid, userid,username,delptname from table1 a order by deptName,indexid
UserID是系统自动生成的,因为可能中间的记录给删除了,这个UserID就不连续了。
同意楼上的意见,加一点小小的改进: select (select count(*) from test1 b where b.delptname = a.delptname and b.userid <=a.userid) as indexid, userid,username,delptname from table1 a order by depltName,indexid
谢谢大家,我给大家加分,(每人20以上) 我怎么就这样笨啊:(lyxinfo()、forgot2000(忘记2000年) 的方法成功了。还有个小小的请求, 现在的SQL Server中,大家写的是 (1)、select * from table1 a,table2 b where a.pid=b.pid 还是写成 (2)、join的形式? 我发现当用select的结果当作一个表又加入到select中时会出错。 而Join的就不会错。
在oracle下,有rownum这样的伪列,如果没有这样伪列的SQL环境,可采用下面的方法(假设你的表名为“test”)(SQL Server2000下调试通过):select (select count(*) from test t1 where t1.userid<=test.userid and t1.deptname=test.deptname) as indexid,userid,username,deptname from test order by deptname,indexid/******************************************** test表的数据: userid username deptname ---------- ---------- ---------- 1 张三 业务部 2 李司 生产部 3 王无 业务部 4 找六 生产部 5 流气 业务部 /********************************************* 上边SQL语句的结果集,不知是否是你所需要的: indexid userid username deptname ----------- ---------- ---------- ---------- 1 2 李司 生产部 2 4 找六 生产部 1 1 张三 业务部 2 3 王无 业务部 3 5 流气 业务部
select (select count(*) from tablename b where b.delptname = a.delptname and b.userid <=a.userid),
userid,usename,delptname
from tablename a
有一个表:
userid(pk) UserName DeptName
-----------------------------------------
1 name1 总经办
2 小明 生产部
4 小华 生产部
7 slilui 总经办
------------------------------------
现在要用SQL 语句查询得出下表:
IndexID UserID(pk) UserName DelptName(按这个分组)
-----------------------------------------------
1 1 name1 总经办
2 7 slilui 总经办
1 2 小明 生产部
2 4 小华 生产部
---------------------------------------------
(说明:就是在分组的基础上加上一个字段Indexid是序号,可以看到出该部门有多少个user)
用什么语句,怎么才能加上indexid这样的数据?
select (select count(*) from test1 b where b.delptname = a.delptname and b.userid <=a.userid) as indexid,
userid,username,delptname
from table1 a
order by deptName,indexid
select (select count(*) from test1 b where b.delptname = a.delptname and b.userid <=a.userid) as indexid,
userid,username,delptname
from table1 a
order by depltName,indexid
我怎么就这样笨啊:(lyxinfo()、forgot2000(忘记2000年) 的方法成功了。还有个小小的请求,
现在的SQL Server中,大家写的是
(1)、select * from table1 a,table2 b where a.pid=b.pid
还是写成
(2)、join的形式?
我发现当用select的结果当作一个表又加入到select中时会出错。
而Join的就不会错。
from test
order by deptname,indexid/********************************************
test表的数据:
userid username deptname
---------- ---------- ----------
1 张三 业务部
2 李司 生产部
3 王无 业务部
4 找六 生产部
5 流气 业务部
/*********************************************
上边SQL语句的结果集,不知是否是你所需要的:
indexid userid username deptname
----------- ---------- ---------- ----------
1 2 李司 生产部
2 4 找六 生产部
1 1 张三 业务部
2 3 王无 业务部
3 5 流气 业务部