回答編集履歴

1

sample

2018/03/14 03:44

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -1 +1,47 @@
1
1
  基本的には総当たりで処理するしかないでしょう
2
+
3
+
4
+
5
+ # sample
6
+
7
+ oracleとちょっと文法が違うかもしれませんが参考までに
8
+
9
+ - 元データ
10
+
11
+ ```SQL
12
+
13
+ create table tbl(id int unique,name varchar(10) unique,price int);
14
+
15
+ insert into tbl values(1,null,0),(2,'A',10000),(3,'B',10000),(4,'C',10000);
16
+
17
+ ```
18
+
19
+ - 組み合わせ結果
20
+
21
+ ```
22
+
23
+ select
24
+
25
+ t1.name as name1
26
+
27
+ ,t2.name as name2
28
+
29
+ ,t3.name as name3
30
+
31
+ ,t1.price+t2.price+t3.price as sum
32
+
33
+ from tbl as t1
34
+
35
+ left join tbl as t2
36
+
37
+ on t1.name!=t2.name and t1.id<t2.id
38
+
39
+ or t2.name is null
40
+
41
+ left join tbl as t3
42
+
43
+ on not t3.name in (t1.name,t2.name) and t1.id<t3.id and t2.id<t3.id
44
+
45
+ or t3.name is null
46
+
47
+ ```