回答編集履歴
5
名前変更
test
CHANGED
@@ -6,4 +6,4 @@
|
|
6
6
|
|
7
7
|
【お詫び】
|
8
8
|
|
9
|
-
以下記述していたSQLはsa
|
9
|
+
以下記述していたSQLはsazi氏から回答にそぐわないとの意見をいただき、検証の結果削除しました。まだまだ勉強が必要です。
|
4
お詫び
test
CHANGED
@@ -4,30 +4,6 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
|
7
|
+
【お詫び】
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
[SQL Server CASEの使い方 条件分岐](https://sql-oracle.com/sqlserver/?p=1037)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
```SQL
|
16
|
-
|
17
|
-
create view 状態確認 as
|
18
|
-
|
19
|
-
select 親ID
|
20
|
-
|
21
|
-
|
9
|
+
以下記述していたSQLはsaji氏から回答にそぐわないとの意見をいただき、削除しました。まだまだ勉強が必要です。
|
22
|
-
|
23
|
-
, (select case count(id) when 3 then '進行' when 2 then '取消' when 1 then '削除' end from 案件一覧 where 親ID=t.親ID and No=1) as 状態1
|
24
|
-
|
25
|
-
, (select case count(id) when 3 then '進行' when 2 then '取消' when 1 then '削除' end from 案件一覧 where 親ID=t.親ID and No=2) as 状態2
|
26
|
-
|
27
|
-
from 案件一覧 t
|
28
|
-
|
29
|
-
where ID=親ID
|
30
|
-
|
31
|
-
```
|
32
|
-
|
33
|
-
もし、それ以上ステータスコードがある場合、whenの条件を増やして対応してください。
|
3
リンク付与
test
CHANGED
@@ -4,7 +4,13 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
そこで、ステータスが3種類ある場合は完了、2種類の場合は取消、1種類の場合は削除という風に、case文を使って切り替えていけばいけるのではないかと思います。
|
7
|
+
そこで、ステータスが3種類ある場合は完了、2種類の場合は取消、1種類の場合は削除という風に、case文を使って切り替えていけばいけるのではないかと思います。case文は何も難しく考えることありません(switch文と同じ要領です)
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
[SQL Server CASEの使い方 条件分岐](https://sql-oracle.com/sqlserver/?p=1037)
|
12
|
+
|
13
|
+
|
8
14
|
|
9
15
|
```SQL
|
10
16
|
|
2
case文に切り替え
test
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
まず、現状のエラーが出るのはビューでサブクエリを作る場合は必ず1つの答えでないといけないためです。
|
2
2
|
|
3
|
-
例に照らし合わせるとC1の2のステータスに対し、削除、取消、
|
3
|
+
例に照らし合わせるとC1の2のステータスに対し、削除、取消、進行の3種類が該当し、どの値を参照していいのか分からないので、エラーを発します。
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
そこで、
|
7
|
+
そこで、ステータスが3種類ある場合は完了、2種類の場合は取消、1種類の場合は削除という風に、case文を使って切り替えていけばいけるのではないかと思います。
|
8
|
-
|
9
|
-
|
10
8
|
|
11
9
|
```SQL
|
12
10
|
|
@@ -16,9 +14,9 @@
|
|
16
14
|
|
17
15
|
, (select 状態 from 案件一覧 where 親ID=t.親ID and No=0) as 状態0
|
18
16
|
|
19
|
-
, (select
|
17
|
+
, (select case count(id) when 3 then '進行' when 2 then '取消' when 1 then '削除' end from 案件一覧 where 親ID=t.親ID and No=1) as 状態1
|
20
18
|
|
21
|
-
, (select
|
19
|
+
, (select case count(id) when 3 then '進行' when 2 then '取消' when 1 then '削除' end from 案件一覧 where 親ID=t.親ID and No=2) as 状態2
|
22
20
|
|
23
21
|
from 案件一覧 t
|
24
22
|
|
@@ -26,6 +24,4 @@
|
|
26
24
|
|
27
25
|
```
|
28
26
|
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
もし、それ以上ステータスコードがある場合、whenの条件を増やして対応してください。
|
1
修正
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
まず、現状のエラーが出るのはビューでサブクエリを作る場合は必ず1つの答えでないといけ
|
1
|
+
まず、現状のエラーが出るのはビューでサブクエリを作る場合は必ず1つの答えでないといけないためです。
|
2
2
|
|
3
|
-
例に照らし合わせるとC1の2のステータスに対し、削除、取消、完了の3種類が該当
|
3
|
+
例に照らし合わせるとC1の2のステータスに対し、削除、取消、完了の3種類が該当し、どの値を参照していいのか分からないので、エラーを発します。
|
4
4
|
|
5
5
|
|
6
6
|
|