回答編集履歴

1

追記

2018/03/14 04:31

投稿

sousuke
sousuke

スコア3828

test CHANGED
@@ -25,3 +25,73 @@
25
25
  ```
26
26
 
27
27
  postgresでは違うのかな?
28
+
29
+
30
+
31
+ #追記
32
+
33
+ case を使えばどうとでもできます。全部書けばいいです。
34
+
35
+ 1.今日以降かどうか
36
+
37
+ 2.今日以降なら昇順(今日未満の日は適当に置き換え、今回はNULL)
38
+
39
+ 3.今日未満なら降順(今日以降の日は適当に置き換え、今回はNULL)
40
+
41
+
42
+
43
+ ```sql
44
+
45
+ create table test(
46
+
47
+ open_at date
48
+
49
+ );
50
+
51
+
52
+
53
+ insert into test(open_at)
54
+
55
+ select X.open_at
56
+
57
+ from (
58
+
59
+ select cast('2018-03-16' as date) as open_at
60
+
61
+ union all
62
+
63
+ select cast('2018-03-15' as date) as open_at
64
+
65
+ union all
66
+
67
+ select cast('2018-03-14' as date) as open_at
68
+
69
+ union all
70
+
71
+ select cast('2018-03-13' as date) as open_at
72
+
73
+ union all
74
+
75
+ select cast('2018-03-12' as date) as open_at
76
+
77
+ ) as X
78
+
79
+
80
+
81
+ select *
82
+
83
+ ,case when open_at>=CURRENT_DATE then 0 else 1 end as 今日以降かどうか
84
+
85
+ ,case when open_at>=CURRENT_DATE then open_at end as 今日以降日付
86
+
87
+ ,case when open_at>=CURRENT_DATE then null else open_at end as 今日未満日付
88
+
89
+ from test
90
+
91
+ order by 今日以降かどうか,今日以降日付,今日未満日付 desc
92
+
93
+ ```
94
+
95
+
96
+
97
+ [http://sqlfiddle.com/#!17/2c989/3/0](http://sqlfiddle.com/#!17/2c989/3/0)