質問:
sql文についての質問です。

| column1 | column2 | column3 |
| apple | 2006-09-13 | 2006-10-11 |
| banana | 2006-09-14 | 2006-09-12 |
| orange | 2006-09-20 | 2006-09-20 |
| rip | 2006-09-20 | 2006-09-10 |

と、column1にはtextデータ、column2,3にはdatatimeデータが格納されているのですが、
これを「column2とcolumn3のいずれかの新しい日付順でソート」したいと思っています。

単純にcolumn2でソートしようと思えば
select * from hoge order by column2;
でいけると思うのですが、
column2とcolumn3両方の値を参照する場合の方法がわかりません。
上記の例でいうと、
| column1 | column2 | column3 |
| apple | 2006-09-13 | 2006-10-11 |
| orange | 2006-09-20 | 2006-09-20 |
| rip | 2006-09-20 | 2006-09-10 |
| banana | 2006-09-14 | 2006-09-12 |
で並び替えたいと思っています。


どのようにSQLを発行すればよろしいでしょうか。
よろしくお願い致します。
答え:
はて、不明な点ばかりです。
「column2とcolumn3のいずれかの新しい日付順でソート」とはどういう意味ですか?
どちらか大きい日付の方、という意味だとすれば、[orange]と[rip]は同じ"2006-09-20"に
なっているので、どちらを優先するのか判りません。
column1もソートに加えるなら、ご希望の順になりますが。

何のDBなのかも不明なのですが、ACCESSなら、
select * from hoge
order by IIf(column2 > column3, column2, column3) desc, column1
とか。
ORACLEなら、DECODEとSIGNを使って出来るかと。
補足の質問:
説明が足りずにすみませんでした。。。DBはmysqlで、c1とc2の日付の新しい方を優先しますので、orangeとripは同順位になります。mysqlですので実際にif文で実行するとできました!本当にありがとうございました。この質問・回答は役に立ちましたか?

ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.

  • HSPで、ファイルのダウンロードを作りたいんですが、...
  • 顔文字のサイトで何か良いやつあったら教えて下さい!...
  • ki-bo-dono kanahennkannwositainodesugayarikata...
  • タッチパネル式の観光案内端末機について実在するのか...
  • 初心者なので分からない事があります。インターネット...
  • ヤフーオークションで落札した商品の詳細確認をしたと...