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

回答編集履歴

1

追記

2018/03/14 04:31

投稿

sousuke
sousuke

スコア3830

answer CHANGED
@@ -11,4 +11,39 @@
11
11
  from イベントテーブル
12
12
  order by 今日以降,open_at desc
13
13
  ```
14
- postgresでは違うのかな?
14
+ postgresでは違うのかな?
15
+
16
+ #追記
17
+ case を使えばどうとでもできます。全部書けばいいです。
18
+ 1.今日以降かどうか
19
+ 2.今日以降なら昇順(今日未満の日は適当に置き換え、今回はNULL)
20
+ 3.今日未満なら降順(今日以降の日は適当に置き換え、今回はNULL)
21
+
22
+ ```sql
23
+ create table test(
24
+ open_at date
25
+ );
26
+
27
+ insert into test(open_at)
28
+ select X.open_at
29
+ from (
30
+ select cast('2018-03-16' as date) as open_at
31
+ union all
32
+ select cast('2018-03-15' as date) as open_at
33
+ union all
34
+ select cast('2018-03-14' as date) as open_at
35
+ union all
36
+ select cast('2018-03-13' as date) as open_at
37
+ union all
38
+ select cast('2018-03-12' as date) as open_at
39
+ ) as X
40
+
41
+ select *
42
+ ,case when open_at>=CURRENT_DATE then 0 else 1 end as 今日以降かどうか
43
+ ,case when open_at>=CURRENT_DATE then open_at end as 今日以降日付
44
+ ,case when open_at>=CURRENT_DATE then null else open_at end as 今日未満日付
45
+ from test
46
+ order by 今日以降かどうか,今日以降日付,今日未満日付 desc
47
+ ```
48
+
49
+ [http://sqlfiddle.com/#!17/2c989/3/0](http://sqlfiddle.com/#!17/2c989/3/0)