2017-02-27 8 views
0

sqlテーブルの私の日付の列はnullにすることができるので、ODataを使ってそのデータを取得しますが、ascで並べ替えるとnull値が他のすべての行の前に表示されます。私は、それが他のすべての後にdesplayedすることを望む:orderbyの振る舞いをオーバーライドする

1. 31.12.2000 
2. 31.12.2010 
3. null 

はDateTime.MaxValueされるように、それはnull値をとるので、何とかフィルタリングを無効にする可能性がありますか?

答えて

1

ANSI標準ではNULLS FIRSTNULLS LASTがサポートされていますが、SQL Serverにはこれらのオプションはありません。私が必要とする、まさに未

order by (case when col is not null then 1 else 2 end), 
     col asc 
+0

代わりに、あなたはORDER BYで2つのキーを使用することができます。ここで[リンク](https://msdn.microsoft.com/en-us/library/gg309461(v= crm.7).aspx#BKMK_orderby)は、私が使用している注文の例です
'/ AccountSet?$ select = Address1_Country 、Address1_City、Name&$ orderby = Address1_Country asc&$ filter =(Address1_Country ne null)および(Address1_City ne null) '。
$ orderby = Address1_Country ascを変更する方法は、null値がキューの最後に移動するためです。 – maximelian1986

+0

他の提案はないので、問題の別の解決方法を指摘しているように、正しいものとしてマークします。しかし、DBを更新し、nullをDateTime.MaxValueに変更したので、注文はOData orderbyプロパティで行うことができます。 – maximelian1986