teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード追記

2021/10/27 00:42

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  **Q1**
7
7
  ```sql
8
- SELECT Table1.項目1 AS 項目4, Table1.項目1 AS 項目5, Count(*) AS 項目6
8
+ SELECT a.項目1 AS 項目4, b.項目1 AS 項目5, Count(*) AS 項目6
9
9
  FROM Table1 AS a INNER JOIN Table1 AS b ON a.項目2 = b.項目2
10
10
  WHERE a.項目1<b.項目1
11
11
  GROUP BY a.項目1, b.項目1;
@@ -42,4 +42,28 @@
42
42
  ```
43
43
 
44
44
  クエリ4つになりましたが、サブクエリを使って一つに纏めることはできます。
45
- が、メンテナンスとか考えたら分けておいた方がいいと思います。
45
+ が、メンテナンスとか考えたら分けておいた方がいいと思いますが、一応、纏めたものの提示しておきます
46
+
47
+ ```sql
48
+ TRANSFORM Sum(QUnion.件数) AS 件数の合計
49
+ SELECT QUnion.項目4, QUnion.項目5
50
+ FROM (
51
+ SELECT 項目4, 項目5, "項目6" AS 列名, 項目6 AS 件数
52
+ FROM (
53
+ SELECT a.項目1 AS 項目4, b.項目1 AS 項目5, Count(*) AS 項目6
54
+ FROM Table1 AS a INNER JOIN Table1 AS b ON a.項目2 = b.項目2
55
+ WHERE a.項目1<b.項目1
56
+ GROUP BY a.項目1, b.項目1
57
+ ) Q1
58
+ UNION ALL
59
+ SELECT 項目4, 項目5, "項目7" AS 列名, 項目7 AS 件数
60
+ FROM (
61
+ SELECT a.項目1 AS 項目4, b.項目1 AS 項目5, Count(*) AS 項目7
62
+ FROM Table2 a INNER JOIN Table2 b ON a.項目3 = b.項目3
63
+ WHERE a.項目1<b.項目1
64
+ GROUP BY a.項目1, b.項目1
65
+ ) Q2
66
+ ) QUnion
67
+ GROUP BY QUnion.項目4, QUnion.項目5
68
+ PIVOT QUnion.列名;
69
+ ```