回答編集履歴

3

推敲

2018/02/05 08:06

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -1,3 +1,7 @@
1
+ 提示のSQLだと単に```ORDER BY '文字列'```にしかなりませんから、ソートは掛かりませんね。
2
+
3
+
4
+
1
5
  以下ではどうですか。
2
6
 
3
7
  ```SQL

2

推敲

2018/02/05 08:06

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ORDER BY B.SUB_KEY desc
14
14
 
15
- , case when sortKbn!=20 then A.SUB_KEY end desc
15
+ , case when sortKbn!='20' then A.SUB_KEY end desc
16
16
 
17
17
  ```
18
18
 
@@ -32,10 +32,10 @@
32
32
 
33
33
  WHERE A.KEY = B.KEY
34
34
 
35
- ORDER BY case when sortKbn=20 then B.SUB_KEY end desc
35
+ ORDER BY case when sortKbn='20' then B.SUB_KEY end desc
36
36
 
37
- , case when sortKbn!=20 then B.SUB_KEY end
37
+ , case when sortKbn!='20' then B.SUB_KEY end
38
38
 
39
- , case when sortKbn!=20 then A.SUB_KEY end desc
39
+ , case when sortKbn!='20' then A.SUB_KEY end desc
40
40
 
41
41
  ```

1

追記

2018/02/05 08:01

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -15,3 +15,27 @@
15
15
  , case when sortKbn!=20 then A.SUB_KEY end desc
16
16
 
17
17
  ```
18
+
19
+ 追記
20
+
21
+ ---
22
+
23
+ 条件によって、B.SUB_KEYの昇順/降順が切り替わるのを見落としていました。
24
+
25
+ ```SQL
26
+
27
+ CURSOR C_CUSTOMER(sortKbn IN NVARCHAR2) IS
28
+
29
+ SELECT A.*
30
+
31
+ FROM A, B
32
+
33
+ WHERE A.KEY = B.KEY
34
+
35
+ ORDER BY case when sortKbn=20 then B.SUB_KEY end desc
36
+
37
+ , case when sortKbn!=20 then B.SUB_KEY end
38
+
39
+ , case when sortKbn!=20 then A.SUB_KEY end desc
40
+
41
+ ```