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

回答編集履歴

3

URL変更

2019/03/12 06:35

投稿

AketiJyuuzou
AketiJyuuzou

スコア1147

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  SQLServerの分析関数の使用例
2
- [http://www.geocities.jp/oraclesqlpuzzle/sqlserver2008-sql1-olap.html](http://www.geocities.jp/oraclesqlpuzzle/sqlserver2008-sql1-olap.html)
2
+ [https://oraclesqlpuzzle.ninja-web.net/sqlserver2008-sql1-olap.html](https://oraclesqlpuzzle.ninja-web.net/sqlserver2008-sql1-olap.html)
3
3
  の「7. 全称肯定,全称否定,存在肯定,存在否定」を見ながら
4
4
  SQLFiddleのSQLServer2014環境で作ってみました :-)
5
5
 

2

いろいろ修正

2019/03/12 06:35

投稿

AketiJyuuzou
AketiJyuuzou

スコア1147

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  SQLServerの分析関数の使用例
2
- http://www.geocities.jp/oraclesqlpuzzle/sqlserver2008-sql1-olap.html
2
+ [http://www.geocities.jp/oraclesqlpuzzle/sqlserver2008-sql1-olap.html](http://www.geocities.jp/oraclesqlpuzzle/sqlserver2008-sql1-olap.html)
3
3
  の「7. 全称肯定,全称否定,存在肯定,存在否定」を見ながら
4
4
  SQLFiddleのSQLServer2014環境で作ってみました :-)
5
5
 

1

いろいろ修正

2017/10/31 10:49

投稿

AketiJyuuzou
AketiJyuuzou

スコア1147

answer CHANGED
@@ -1,3 +1,6 @@
1
+ SQLServerの分析関数の使用例
2
+ http://www.geocities.jp/oraclesqlpuzzle/sqlserver2008-sql1-olap.html
3
+ の「7. 全称肯定,全称否定,存在肯定,存在否定」を見ながら
1
4
  SQLFiddleのSQLServer2014環境で作ってみました :-)
2
5
 
3
6
  ```sql
@@ -17,14 +20,23 @@
17
20
  select 600,N'青' union all
18
21
  select 700,N'赤' union all
19
22
  select 700,N'緑' union all
23
+ select 700,N'黒' union all
24
+ select 800,N'赤' union all
25
+ select 800,N'赤' union all
20
- select 700,N'黒')
26
+ select 800,N'黒')
21
27
  select 項目A
22
28
  from t
23
29
  group by 項目A
24
30
  having sum(case 項目B when N'赤' then 1 else 0 end) > 0 --条件2
25
31
  and sum(case 項目B when N'青' then 1 else 0 end) = 0 --条件3
26
32
  and sum(case 項目B when N'黄' then 1 else 0 end) = 0 --条件4
27
- and not (count(*) = sum(case 項目B when N'赤' then 1 else 0 end) --条件5
33
+ and not (min(case 項目B when N'赤' then 1 else 0 end) = 1 --条件5
28
34
  and count(*) >= 2)
29
35
  order by 項目A
36
+
37
+ | 項目A |
38
+ |-----|
39
+ | 300 |
40
+ | 700 |
41
+ | 800 |
30
42
  ```