Oracle如何取出某一列的所有不重复值作为单独一列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle如何取出某一列的所有不重复值作为单独一列相关的知识,希望对你有一定的参考价值。
字段1 字段2
a 1
a 1
a 2
b 1
b 2
b 3
效果
a 1,2
b 1,2,3
类似纵表变横表,求高手指导,想了很久没想出来
如
SELECT c.gysid, listagg(c.wzlbid,\',\') within GROUP (ORDER BY c.wzlbid) FROM wzgl_gys_zrwmfw c GROUP BY gysid
这几个方法都可以实现行转列,达到想要的效果。
但当数据量比较大时却报ORA-01489:字符串连接的结果过长。
此时个人的解决办法,只能转到程序代码中去处理。
希望,以此为鉴! 参考技术A 用wmsys.wm_concat这个函数,如果你的库中没有这个函数,参照一个这个网站自己创建一下
http://bbs.csdn.net/topics/360036492?page=1 参考技术B select a, wmsys.wm_concat(b) from atest t group by a
结果:
a 1,2,1
b 1,3,2
select a, wmsys.wm_concat(b)
from (select distinct a, b from atest) t
group by a
结果:
a 2,1
b 3,2,1
本回答被提问者和网友采纳 参考技术C Select distinct column_name from table_nameoracle 表列值唯一 怎么实现
你这个情况,可以采用
序列号
+
触发器
的方式来处理。
SQL>
CREATE
SEQUENCE
test_sequence2
2
increment
by
1
--
每次递增1
3
start
with
1
--
从1开始
4
nomaxvalue
--
没有最大值
5
minvalue
1
--
最小值=1
6
NOCYCLE;
--
不循环
Sequence
created.
SQL>
CREATE
TABLE
test_create_tab2
(
2
id
INT,
3
val
VARCHAR(10),
4
PRIMARY
KEY
(id)
5
);
Table
created.
SQL>
CREATE
OR
REPLACE
TRIGGER
BeforeTestCreate2Insert
2
BEFORE
INSERT
ON
test_create_tab2
3
FOR
EACH
ROW
4
BEGIN
5
SELECT
test_sequence2.nextval
INTO
:new.id
FROM
dual;
6
END;
7
/
Trigger
created.
SQL>
INSERT
INTO
test_create_tab2(val)
VALUES
('NO
id');
1
row
created.
SQL>
INSERT
INTO
test_create_tab2(id,
val)
VALUES
(1,
'id
no
use');
1
row
created.
SQL>
SELECT
*
FROM
test_create_tab2;
ID
VAL
----------
--------------------
1
NO
id
2
id
no
use 参考技术A select
count(1)
from
xxx
where
yyy
is
null;
首先
yyyy
是nullable这样做才有意义,
如果是nullable
那么最快的是
建一个索引
create
index
ind1
on
xxx(yyy,1);
如下面的例子:
sql>
set
timing
on;
sql>
sql>
select
count(1)
from
tvol
where
owner
is
null;
count(1)
----------
0
elapsed:
00:00:02.89
sql>
sql>
create
index
ind1
on
tvol(owner,1);
index
created.
elapsed:
00:00:20.73
sql>
select
count(1)
from
tvol
where
owner
is
null;
count(1)
----------
0
elapsed:
00:00:00.00
以上是关于Oracle如何取出某一列的所有不重复值作为单独一列的主要内容,如果未能解决你的问题,请参考以下文章
SQLSERVER去除某一列的重复值并显示所有数据DISTINCT去重ISNULL()求SUM()NOT EXISTS的使用