困扰了很久的sql语句 望高手指点

[复制链接]
查看11 | 回复9 | 2008-8-25 01:02:02 | 显示全部楼层 |阅读模式
oracle 数据库中 一个表
1
1
衡水市国税局
0
1
2
2
桃城区国税局
1
2
3
100
桃城区税政科
2
3
4
5122
科长
100
4
5
5124
员工
100
4
6
101
桃城区征管科
2
3
7
5126
桃城区国税局2
101
4
8
102
桃城区政法科
2
3
9
2629
桃城区(子)
2
4
10
2632
桃城区
2
5
11
2935
桃城区税政科2
2
5
12
2925
桃城区分局
2629
4
13
2927
政法科科长
2629
4
14
4442
员工
2
4
15
2929
桃城区
2629
4
16
3325
局长
102
3
现在想写一个pl/sql 语句 出现一列统计最后一列出现的次数 依次累加
1
1
衡水市国税局
0
1 1
2
2
桃城区国税局
1
2 21
3
100
桃城区税政科
2
331
4
5122
科长
100
441
5
5124
员工
100
442
6
101
桃城区征管科
2
332
7
5126
桃城区国税局2
101
442
8
102
桃城区政法科
2
333
9
2629
桃城区(子)
2
4 43
10
2632
桃城区
2
5 51
11
2935
桃城区税政科2
2
552
12
2925
桃城区分局
2629
4
44
13
2927
政法科科长
2629
4
45
14
4442
员工
2
4 46
15
2929
桃城区
2629
447
16
3325
局长
102
3 34
如何实现?
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
不明白lz新增加的那列什么意思
怎么得到
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
之前一列数据 出现的次数
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
楼主是这个意思
SQL> select * from emp;
7369 SMITHCLERK 7902 17-DEC-80800
20
7499 ALLENSALESMAN7698 20-FEB-81 1600300 30
7521 WARD SALESMAN7698 22-FEB-81 1250500 30
7566 JONESMANAGER 7839 02-APR-81 2975
20
7654 MARTIN SALESMAN7698 28-SEP-81 1250 1400 30
7698 BLAKEMANAGER 7839 01-MAY-81 2850
30
7782 CLARKMANAGER 7839 09-JUN-81 2450
10
7788 SCOTTANALYST 7566 19-APR-87 3000
20
7839 KING PRESIDENT
17-NOV-81 5000
10
7844 TURNER SALESMAN7698 08-SEP-81 1500
0 30
7876 ADAMSCLERK 7788 23-MAY-87 1100
20
7900 JAMESCLERK 7698 03-DEC-81950
30
7902 FORD ANALYST 7566 03-DEC-81 3000
20
7934 MILLER CLERK 7782 23-JAN-82 1300
10
14 rows selected.
SQL> select a.*,count(deptno)over(partition by deptno)from emp a;
7782 CLARKMANAGER 7839 09-JUN-81 2450
10
3
7839 KING PRESIDENT
17-NOV-81 5000
10
3
7934 MILLER CLERK 7782 23-JAN-82 1300
10
3
7369 SMITHCLERK 7902 17-DEC-80800
20
5
7876 ADAMSCLERK 7788 23-MAY-87 1100
20
5
7902 FORD ANALYST 7566 03-DEC-81 3000
20
5
7788 SCOTTANALYST 7566 19-APR-87 3000
20
5
7566 JONESMANAGER 7839 02-APR-81 2975
20
5
7499 ALLENSALESMAN7698 20-FEB-81 1600300 30
6
7698 BLAKEMANAGER 7839 01-MAY-81 2850
30
6
7654 MARTIN SALESMAN7698 28-SEP-81 1250 1400 30
6
7900 JAMESCLERK 7698 03-DEC-81950
30
6
7844 TURNER SALESMAN7698 08-SEP-81 1500
0 30
6
7521 WARD SALESMAN7698 22-FEB-81 1250500 30
6
14 rows selected.
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
不是 是这样
7782 CLARKMANAGER 7839 09-JUN-81 2450
10
1
7839 KING PRESIDENT
17-NOV-81 5000
10
2
7934 MILLER CLERK 7782 23-JAN-82 1300
10
3
7369 SMITHCLERK 7902 17-DEC-80800
20
1
7876 ADAMSCLERK 7788 23-MAY-87 1100
20
2
7902 FORD ANALYST 7566 03-DEC-81 3000
20
3
7788 SCOTTANALYST 7566 19-APR-87 3000
20
4
7566 JONESMANAGER 7839 02-APR-81 2975
20
5
7499 ALLENSALESMAN7698 20-FEB-81 1600300 30
1
7698 BLAKEMANAGER 7839 01-MAY-81 2850
30
2
7654 MARTIN SALESMAN7698 28-SEP-81 1250 1400 30
3
7900 JAMESCLERK 7698 03-DEC-81950
30
4
7844 TURNER SALESMAN7698 08-SEP-81 1500
0 30
5
7521 WARD SALESMAN7698 22-FEB-81 1250500 30
6
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
看错了换成用row_number()就可以了
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
什么意思?
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
select a.*,row_number() over(partition by deptno order by deptno)from emp a;
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
用分析函数over(partition by )
回复

使用道具 举报

千问 | 2008-8-25 01:02:02 | 显示全部楼层
恩 问题解决了 谢谢各位了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行