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

回答編集履歴

3

推敲

2018/02/05 08:06

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,3 +1,5 @@
1
+ 提示のSQLだと単に```ORDER BY '文字列'```にしかなりませんから、ソートは掛かりませんね。
2
+
1
3
  以下ではどうですか。
2
4
  ```SQL
3
5
  CURSOR C_CUSTOMER(sortKbn IN NVARCHAR2) IS

2

推敲

2018/02/05 08:06

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  FROM A, B
6
6
  WHERE A.KEY = B.KEY
7
7
  ORDER BY B.SUB_KEY desc
8
- , case when sortKbn!=20 then A.SUB_KEY end desc
8
+ , case when sortKbn!='20' then A.SUB_KEY end desc
9
9
  ```
10
10
  追記
11
11
  ---
@@ -15,7 +15,7 @@
15
15
  SELECT A.*
16
16
  FROM A, B
17
17
  WHERE A.KEY = B.KEY
18
- ORDER BY case when sortKbn=20 then B.SUB_KEY end desc
18
+ ORDER BY case when sortKbn='20' then B.SUB_KEY end desc
19
- , case when sortKbn!=20 then B.SUB_KEY end
19
+ , case when sortKbn!='20' then B.SUB_KEY end
20
- , case when sortKbn!=20 then A.SUB_KEY end desc
20
+ , case when sortKbn!='20' then A.SUB_KEY end desc
21
21
  ```

1

追記

2018/02/05 08:01

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -6,4 +6,16 @@
6
6
  WHERE A.KEY = B.KEY
7
7
  ORDER BY B.SUB_KEY desc
8
8
  , case when sortKbn!=20 then A.SUB_KEY end desc
9
+ ```
10
+ 追記
11
+ ---
12
+ 条件によって、B.SUB_KEYの昇順/降順が切り替わるのを見落としていました。
13
+ ```SQL
14
+ CURSOR C_CUSTOMER(sortKbn IN NVARCHAR2) IS
15
+ SELECT A.*
16
+ FROM A, B
17
+ WHERE A.KEY = B.KEY
18
+ ORDER BY case when sortKbn=20 then B.SUB_KEY end desc
19
+ , case when sortKbn!=20 then B.SUB_KEY end
20
+ , case when sortKbn!=20 then A.SUB_KEY end desc
9
21
  ```