这样行不?
dw@dw>WITH t AS
2(SELECT1 ID, 'a' NAME FROM dual
3UNION ALL
4SELECT 1, 'd' FROM dual
5UNION ALL
6SELECT 2, 'b' FROM dual
7UNION ALL
8SELECT 2, 'e' FROM dual
9UNION ALL
10SELECT 2, 'f' FROM dual
11UNION ALL
12SELECT 2, 'g' FROM dual
13UNION ALL
14SELECT 3, 'c' FROM dual
15UNION ALL
16SELECT 3, 'h' FROM dual
17UNION ALL
18SELECT 3, 'k' FROM dual
19UNION ALL
20SELECT 3, 'l' FROM dual)
21select * from (select t.*,CUME_DIST() over( partition by t.id order by dbms_random.value) cd from t) where cdWITH t AS
2(SELECT1 ID, 'a' NAME FROM dual
3UNION ALL
4SELECT 1, 'd' FROM dual
5UNION ALL
6SELECT 2, 'b' FROM dual
7UNION ALL
8SELECT 2, 'e' FROM dual
9UNION ALL
10SELECT 2, 'f' FROM dual
11UNION ALL
12SELECT 2, 'g' FROM dual
13UNION ALL
14SELECT 3, 'c' FROM dual
15UNION ALL
16SELECT 3, 'h' FROM dual
17UNION ALL
18SELECT 3, 'k' FROM dual
19UNION ALL
20SELECT 3, 'l' FROM dual)
21select * from (select t.*,CUME_DIST() over( partition by t.id order by dbms_random.value) cd from t) where cd
|