VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1274|回复: 7

关于号码合并(急!! )

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-30 12:40:01 | 显示全部楼层 |阅读模式
表如下
Id--number
pjhm--varchar
eg:
id pjhm
1   1
1   2
1   3
2    1
2    2
求一sql实现根据id号进行号码合并 ,

1  1-3
2  1-2
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-8 11:15:02 | 显示全部楼层

select ID,min(PJHM), max(PJHM)                          
  from (                                                  
  select ID, PJHM - rownum as c, rownum, PJHM from (   
  SELECT  * FROM (                                       
    SELECT 1 AS ID, '001' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '002' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '003' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '005' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '006' AS PJHM FROM DUAL UNION ALL   
    SELECT 2 AS ID, '001' AS PJHM FROM DUAL UNION ALL   
    SELECT 2 AS ID, '005' AS PJHM FROM DUAL UNION ALL   
    SELECT 2 AS ID, '006' AS PJHM FROM DUAL                                                  
    )order by ID,PJHM)                                 
  )group by ID,c                                       
  ORDER BY 1, 2 ;
回复

使用道具 举报

0

主题

13

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-8 17:15:01 | 显示全部楼层
create or replace function f_get_str(in_id number) return varchar2
is
v_str varchar(50);
v_result varchar(500);
cursor c_str is
    select pjhm from table1 where id=in_id ;
begin
    open c_str;
    v_result := ' ';
    loop
        fetch c_str into v_str;
        
        exit when c_str%NOTFOUND;
        v_result := v_result || trim(v_str) || '-' ;
    end loop;
    close c_str;  
    return v_result;
end f_get_str;
/
select id,f_get_str(id)
from table1
order by id;
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-3-8 21:00:01 | 显示全部楼层
写个静态的语句......
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-12 17:30:01 | 显示全部楼层
select ID,min(PJHM)||'-'||max(PJHM)                          
  from (                                                  
  select ID, PJHM - rownum as c, rownum, PJHM from (   
  SELECT  * FROM (                                       
    SELECT 1 AS ID, '001' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '002' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '003' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '005' AS PJHM FROM DUAL UNION ALL   
    SELECT 1 AS ID, '006' AS PJHM FROM DUAL UNION ALL   
    SELECT 2 AS ID, '001' AS PJHM FROM DUAL UNION ALL   
    SELECT 2 AS ID, '005' AS PJHM FROM DUAL UNION ALL   
    SELECT 2 AS ID, '006' AS PJHM FROM DUAL                                                
    )order by ID,PJHM)                                 
  )group by ID,c                                       
  ORDER BY 1, 2 ;
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-3-16 16:00:02 | 显示全部楼层
没说清楚,
我不想要静态语句
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-17 00:15:02 | 显示全部楼层
还是不明白楼主想要什么样的语句?
select ID,min(PJHM)||'-'||max(PJHM)
from ( select ID, PJHM - rownum as c, rownum, PJHM from (
SELECT * FROM table_name order by ID,PJHM)
)group by ID,c
ORDER BY 1, 2 ;
回复

使用道具 举报

0

主题

71

帖子

50.00

积分

新手上路

Rank: 1

积分
50.00
发表于 2020-3-17 19:45:01 | 显示全部楼层
select ID,min(PJHM)||'-'||max(PJHM)
from ( select ID, PJHM - rownum as c, rownum, PJHM from (
SELECT * FROM table_name order by ID,PJHM)
)group by ID,c
ORDER BY 1, 2 ;
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表