取出来的数据是
楼层号 是否开启
1 Y
2 Y
3 Y
4 N
5 Y
6 N我想取的时候直接取这种形式
楼层号 是否开启
1-3,5 Y
4,6 N我知道WMSYS.WM_CONCAT这个可以实现逗号相连,但把1、2、3组成1-3该怎么办呢?
楼层号 是否开启
1 Y
2 Y
3 Y
4 N
5 Y
6 N我想取的时候直接取这种形式
楼层号 是否开启
1-3,5 Y
4,6 N我知道WMSYS.WM_CONCAT这个可以实现逗号相连,但把1、2、3组成1-3该怎么办呢?
group by a-rownum
UNION ALL
SELECT min(a)||'-'||max(a),'N' FROM T WHERE T.B='N'
group by a-rownum;
create table t(a int ,b varchar2(10));
insert into t values(1,'Y');
insert into t values(2,'Y');
insert into t values(3,'Y');
insert into t values(4,'N');
insert into t values(5,'Y');
insert into t values(6,'N');
insert into t values(7,'Y');
insert into t values(8,'Y');
insert into t values(9,'N');
insert into t values(10,'Y');
select B, min(A) || '-' || max(A) as e
from (select B, A, A - row_number() over(partition by B order by A) rn
from T)
group by B, rn
order by B, rn;
因为 1: 排序,组合,装箱这些操作你的应用层代码未见得比数据库性能好。
2: 几千万条数据传到应用程序里排序聚合装箱好,还是在数据库里完成后传过来一个几百行的结果集好?
我的意思是可以用pl/sql,可以用应用代码
因为楼主的问题看起来更像是行列转换
数据已经排序、组合完了,剩下的要用何种形式展现,对数据的展现格式,没用必要非要用sql