SQLでNullを含んだカラムのソートって悩ましいですね。
時と場合によって、Nullの入ったものは一番上に来てほしかったり、一番下に来てほしかったり。
Oracleだと「ORDER BY」の中にNullの扱いをどうするかをあらかじめ組み入れられるようなのですが、SQL SERVERにはそういうものはありません。
でも、別に自分でその仕組みを作ってやればいいのですね。
調整したいカラム名がNullのときとそうでないときに場合分けをして、便宜的に0,1を代入し、それをORDER BYの中に独立してソート列に使うというやり方を見つけました。
たとえばORDER BYに
CASE WHEN Strike_Price IS NULL THEN 1 ELSE 0 END
,Strike_Price DESC
とすれば、この場合は「Strike_Price」の降順ではあるものの、NULLであるものは一番下、というソートができます。
上段で、Strike_Priceがあるものは0、ないものは1と置いて、その昇順をつけておいてから、下段でStrike_Priceの降順にしているからです。
ちょっとした工夫なのですが、Nullの扱いがなんとなく視覚的にもわかるので、他のSQLでも使いたい気がします。
Nullがあったりなかったりするデータのほうがおかしいのだ、という意見はごもっとも。
でも、今回の事例でいうと、扱うのは、先物やオプション、現株が混在するポートフォリオだったりするので、オプション以外は「Strike_Price=行使価格」を持たないですからね・・・。
SQL本
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS) [ ミック ]
2,750円(税込)【送料込】
楽天ブックス
CodeZine BOOKS ミック 翔泳社タツジンニマナブエスキューエルテッテイシナンショ ダイニハン ショキュウシャデオワリタクナイアナタヘ ミック 発行年月:2018年10月11日 予約締切日:
SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ) [ ミック ]
2,068円(税込)【送料込】
楽天ブックス
プログラミング学習シリーズ ミック 翔泳社エスキューエルダイニハン ゼロカラハジメルデータベースソウサ ミック 発行年月:2016年06月16日 ページ数:336p サイズ:単行本 ISBN:9784
SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus) [ ミック ]
2,838円(税込)【送料込】
楽天ブックス
WEB+DB PRESS plus ミック 技術評論社SQLジッセンニュウモン──コウソクデワカリヤスイクエリノカキカタ ミック 発行年月:2015年04月 予約締切日:2015年04月10日 ページ
SQLクックブック 第2版 データベースエキスパート、データサイエンティストのための実践レシピ集 [ Anthony Molinaro ]
4,400円(税込)【送料込】
楽天ブックス
データベースエキスパート、データサイエンティストのための実践レシピ集 Anthony Molinaro Robert de Graaf オライリー・ジャパンエスキューエルクックブックダイニハン アンソ
SQLポケットリファレンス改訂第4版 (Pocket reference) [ 朝井淳 ]
2,178円(税込)【送料込】
楽天ブックス
Pocket reference 朝井淳 技術評論社エスキューエル ポケット リファレンス アサイ,アツシ 発行年月:2017年02月 ページ数:656p サイズ:単行本 ISBN:978477418