27,579
社区成员
发帖
与我相关
我的任务
分享
;WITH CTE AS(
SELECT CAST(id AS VARCHAR(8000))ids,id
,number
,1 Times
FROM TB
WHERE number<=10
UNION ALL
SELECT T2.ids+','+CAST(T1.id AS VARCHAR(8000)),T1.id,T1.number+T2.number
,T2.Times+1
FROM TB T1
JOIN CTE T2 ON T2.id<T1.id AND T1.number+T2.number<=10 AND T2.Times<=3
)
SELECT ids[序列号] FROM CTE
WHERE number=10
;WITH CTE(ID,Nr) AS
(
SELECT 1,2
UNION ALL SELECT 2,2
UNION ALL SELECT 3,3
UNION ALL SELECT 4,5
UNION ALL SELECT 5,2
UNION ALL SELECT 6,8
UNION ALL SELECT 7,1
UNION ALL SELECT 8,2
UNION ALL SELECT 9,3
UNION ALL SELECT 10,3
)
SELECT a.ID ,b.ID,C.ID
FROM CTE a,CTE b,CTE c
WHERE a.Nr + b.Nr + c.Nr = 10
AND a.ID <= b.ID
AND b.ID <= c.ID
/*
ID ID ID
1 3 4
2 3 4
1 4 9
1 4 10
2 4 9
2 4 10
3 4 5
3 4 8
4 5 9
4 5 10
6 7 7
4 8 9
4 8 10
*/Connected to Oracle Database 11g Express Edition Release 11.2.0.2.0
Connected as shiyiwan@XE
SQL>
SQL> WITH T AS
2 (SELECT 1 AS ID, 2 AS NUM
3 FROM DUAL
4 UNION ALL
5 SELECT 2, 2
6 FROM DUAL
7 UNION ALL
8 SELECT 3, 3
9 FROM DUAL
10 UNION ALL
11 SELECT 4, 5
12 FROM DUAL
13 UNION ALL
14 SELECT 5, 2
15 FROM DUAL
16 UNION ALL
17 SELECT 6, 8
18 FROM DUAL
19 UNION ALL
20 SELECT 7, 1
21 FROM DUAL
22 UNION ALL
23 SELECT 8, 2
24 FROM DUAL
25 UNION ALL
26 SELECT 9, 3
27 FROM DUAL
28 UNION ALL
29 SELECT 10, 3
30 FROM DUAL)
31 SELECT T1.ID, T2.ID, NULL, NULL
32 FROM T T1, T T2
33 WHERE T1.NUM + T2.NUM = 10
34 AND T1.NUM <> T2.NUM
35 UNION ALL
36 SELECT T1.ID, T2.ID, T3.ID, NULL
37 FROM T T1, T T2, T T3
38 WHERE T1.NUM + T2.NUM + T3.NUM = 10 AND T1.NUM <> T2.NUM AND
39 T1.NUM <> T3.NUM AND T2.NUM <> T3.NUM
40 UNION ALL
41 SELECT T1.ID, T2.ID, T3.ID, T4.ID
42 FROM T T1, T T2, T T3, T T4
43 WHERE T1.NUM + T2.NUM + T3.NUM + T4.NUM = 10 AND T1.NUM <> T2.NUM AND
44 T1.NUM <> T3.NUM AND T1.NUM <> T4.NUM AND T2.NUM <> T3.NUM AND
45 T2.NUM <> T4.NUM AND T3.NUM <> T4.NUM;
ID ID NULL NULL
---------- ---------- ---------- ----------
1 6
2 6
5 6
6 1
6 2
6 5
6 8
8 6
1 3 4
1 4 3
1 4 9
1 4 10
1 9 4
1 10 4
2 3 4
2 4 3
2 4 9
2 4 10
2 9 4
2 10 4
ID ID NULL NULL
---------- ---------- ---------- ----------
3 1 4
3 2 4
3 4 1
3 4 2
3 4 5
3 4 8
3 5 4
3 8 4
4 1 3
4 1 9
4 1 10
4 2 3
4 2 9
4 2 10
4 3 1
4 3 2
4 3 5
4 3 8
4 5 3
4 5 9
4 5 10
ID ID NULL NULL
---------- ---------- ---------- ----------
4 8 3
4 8 9
4 8 10
4 9 1
4 9 2
4 9 5
4 9 8
4 10 1
4 10 2
4 10 5
4 10 8
5 3 4
5 4 3
5 4 9
5 4 10
5 9 4
5 10 4
8 3 4
8 4 3
8 4 9
8 4 10
ID ID NULL NULL
---------- ---------- ---------- ----------
8 9 4
8 10 4
9 1 4
9 2 4
9 4 1
9 4 2
9 4 5
9 4 8
9 5 4
9 8 4
10 1 4
10 2 4
10 4 1
10 4 2
10 4 5
10 4 8
10 5 4
10 8 4
80 rows selected
SQL>