CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

高分求救,一条sql可不可以实现以下这样的功能,急急!!

楼主duninglqwlsq(dfd)2006-06-03 01:55:06 在 Oracle / 开发 提问

表A:  
     
  字段1         字段2           字段3         字段4  
  001             liao             AA                     tw  
  002             liao             AA                     tw  
  003             liao             BB                     tw  
  004             ming             CC                     bb  
   
  要实现的功能:先通过字段4   group   by,然后   order   by   字段3  
  如果字段4一样的条件下,字段2出现同样的值,必须累加1,如liao   liao1   liao2   .....  
   
  输出如下:(主要是实现update   字段2)  
   
  字段1         字段2           字段3                     字段4  
  001             liao.tw               AA                     tw  
  002             liao1.tw             AA                     tw  
  003             liao2.tw             BB                     tw  
  004             ming.bb               CC                     bb  
   
  其中字段2的组成格式为:原来字段   +   累加序号(出现同样的+1)   +   "."   +   字段4  
   
  请问各位高手,能否通过一条sql解决。表中数据字段1为主键,如何实现使效率最高。  
   
   
  先谢谢了,很急。  
  问题点数:100、回复次数:4Top

1 楼cenlmmx(学海无涯苦作舟)回复于 2006-06-03 14:50:42 得分 0

SQL>   select   *   from   t2;  
   
                  C1   C2                   C3                   C4  
  ----------   ----------   ----------   ----------  
                    1   liao               AA                   tw  
                    2   liao               AA                   tw  
                    3   liao               AA                   tw  
                    4   ming               CC                   bb  
   
  SQL>    
  SQL>   select   c1,c2   ||   decode(rn,1,'',rn-1)   ||   '.'   ||   c4   as   c2,c3,c4     from  
      2     (select   t2.*,row_number()   over(partition   by   t2.c4   order   by   t2.c1)   rn   from   t2)   order   by   c1  
      3     /  
   
                  C1   C2                                                                                                                         C3                   C4  
  ----------   -------------------------------------------------------------   ----------   ----------  
                    1   liao.tw                                                                                                               AA                   tw  
                    2   liao1.tw                                                                                                             AA                   tw  
                    3   liao2.tw                                                                                                             AA                   tw  
                    4   ming.bb                                                                                                               CC                   bb  
  Top

2 楼duninglqwlsq(dfd)回复于 2006-06-03 16:46:58 得分 0

楼上的这样不对,如果  
                  C1   C2                   C3                   C4  
  ----------   ----------   ----------   ----------  
                    1   liao               AA                   tw  
                    2   liao               AA                   tw  
                    3   liao               AA                   tw  
                    4   ming               CC                   bb  
                    5   liao               BB                   bb  
   
  输出的在同一组C4里,比如上面是tw\bb两组,tw出现的liao和bb出现的liao必须又重置,也就是说C2相同的不是一直累加,在不同组必须重新拍Top

3 楼duninglqwlsq(dfd)回复于 2006-06-03 16:49:04 得分 0

如果字段4一样的条件下,字段2出现同样的值,必须累加1,如liao   liao1   liao2   .....  
   
  字段4不同,字段2出现相同的必须重新从0排起。Top

4 楼young0x()回复于 2006-06-04 03:28:54 得分 0

upTop

相关问题

关键词

得分解答快速导航

  • 帖主:duninglqwlsq

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo