日期:2014-05-17  浏览次数:20668 次

求一高效率sql
现有如果情况的数据 一张表有下列数据
X Y Z
1 11 a
1 12 b
1 13 c
3 31 e
3 32 f
注:表中每条数据肯定会有另一与之X相等的数据 即X某一值肯定会出现两次以上

我想查询时查询结果是 (查出所有与X值相同的数据的Y字段并把Y拼接成字符串)
X Y Z
1 12,13 a
1 11,13 b
1 11,12 c
3 32 e
3 31 f

注:表中数据可能上千万,但一般同一X对应Y的值不会超过100个 求大侠指教啊,效率最好高点啊

------解决方案--------------------
SQL code
create table t(X int,  Y int,  Z varchar2(10));
insert into t values(1, 11, 'a');
insert into t values(1, 12, 'b');
insert into t values(1, 13, 'c');
insert into t values(1, 1211, 'g');
insert into t values(3, 31, 'e');
insert into t values(3, 32, 'f');


with t1 as (
select x, y, z, ','||wm_concat(y) over (partition by x)||',' y1 from t
)
select x, 
regexp_replace(regexp_replace(replace(y1, ','||y||',', ','), '^,',''), ',$', '') y,
z from t1;

---结果--
         X Y                    Z
---------- -------------------- ----------
         1 12,1211,13           a
         1 11,1211,13           b
         1 11,12,13             g
         1 11,12,1211           c
         3 31                   f
         3 32                   e

------解决方案--------------------
你妹的csdn 我的2楼哪里去了,里面有解决的sql,擦的。。。。。