Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

157

积分

0

好友

14

主题
1#
发表于 2013-1-10 10:55:50 | 查看: 4280| 回复: 2
数据库版本11.2.0.3.0
有如下数据

  1. ID  NAME
  2. -------
  3. 1   A
  4. 1   B
  5. 2   C
  6. 2   A
  7. 3   B
  8. 3   C
  9. 3   A
  10. 4   A
  11. 4   B
  12. 4   D
复制代码
期望查询结果

  1. ID  AccuNDV
  2. ----------
  3. 1   2
  4. 2   3
  5. 3   3
  6. 4   4
复制代码
AccuNDV表示按ID顺序时累计不同NAME取值的个数。
例如
ID=1时,name累计有2种取值A和B
ID=2时,name累计有3种取值,在A和B基础上增加C
ID=3时,name累计仍然3种取值,AB和C
ID=4时,name累计变成4种取值,新增D

谢谢
2#
发表于 2013-1-10 10:59:31
case ID
       when 1 then 'A','B'
       when 2 then ''''

点评 回复 只看该作者 道具 举报

clevernby 发表于 2013-1-10 11:03
写死了还有什么意义啊
3#
发表于 2013-1-10 11:18:36
用标量子查询
SQL> select id,
  2         (select count(distinct name) from test t2 where t2.id <= t1.id) as accundv
  3    from test t1
  4   group by id
  5  /

                                     ID    ACCUNDV
--------------------------------------- ----------
                                      1          2
                                      2          3
                                      4          4
                                      3          3

SQL>

回复 只看该作者 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 04:18 , Processed in 0.048964 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569