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入門 第4版 ドリル256問付き! (スッキリわかる入門シリーズ) [ 中山 清喬 ]
3,080円(税込)【送料込】
楽天ブックス
スッキリわかる入門シリーズ 中山 清喬 飯田 理恵子 インプレススッキリワカルエスキューエルニュウモンダインヨンハンドリルニヒャクゴジュウロクモンツキ ナカヤマキヨタカ イイダリエコ 発行年月:202
スッキリわかるSQL入門 第3版 ドリル256問付き! (スッキリわかる入門シリーズ) [ 中山 清喬 ]
3,080円(税込)【送料込】
楽天ブックス
スッキリわかる入門シリーズ 中山 清喬 飯田 理恵子 インプレススッキリワカルエスキューエルニュウモンダイサンパンドリルニヒャクゴジュウロクモンツキ ナカヤマ キヨタカ イイダ リエコ 発行年月:20
SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus) [ ミック ]
2,838円(税込)【送料込】
楽天ブックス
WEB+DB PRESS plus ミック 技術評論社SQLジッセンニュウモン──コウソクデワカリヤスイクエリノカキカタ ミック 発行年月:2015年04月 予約締切日:2015年04月10日 ページ
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS) [ ミック ]
2,750円(税込)【送料込】
楽天ブックス
CodeZine BOOKS ミック 翔泳社タツジンニマナブエスキューエルテッテイシナンショ ダイニハン ショキュウシャデオワリタクナイアナタヘ ミック 発行年月:2018年10月11日 予約締切日:
SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ) [ ミック ]
2,068円(税込)【送料込】
楽天ブックス
プログラミング学習シリーズ ミック 翔泳社エスキューエルダイニハン ゼロカラハジメルデータベースソウサ ミック 発行年月:2016年06月16日 ページ数:336p サイズ:単行本 ISBN:9784