さまざまな列で並べ替えられた結果を吐き出すことができるクエリがありますが、並べ替えられた列で null 値を処理できる必要があります。どんな助けでも大歓迎です。次に例を示します。
Table [People]
Columns [Name], [Birthday] (NULLABLE)
クエリ where@Sort
はソートする列を指定する int であり、@pageStart
および@pageEnd
は int で、返される結果をクエリに伝えます。(選択した行のみを返すため[RowNum]
、CTE にネストされた列を使用しています。他の処理も行われていますが、簡単にするために削除しています。):
;with results as(
SELECT [Name], [Birthday], ROW_NUMBER() OVER (ORDER BY
CASE WHEN @Sort = 0 THEN [Name] END,
CASE WHEN @Sort = 2 THEN [Birthday] END,
CASE WHEN @Sort = 1 THEN [Name] END DESC,
CASE WHEN @Sort = 3 THEN [Birthday] END DESC) AS RowNum
FROM [People]
)
SELECT [Name], [Birthday]
FROM results
WHERE RowNum BETWEEN @pageStart AND @pageEnd
--ORDER RowNum
--The last order by doesn't seem to be needed
null は、次のようなステートメントで処理できることを知っています。
ORDER BY (CASE WHEN [columnName] is NULL THEN 1 ELSE 0 END), [columnName]
作業中のクエリにそれを適用するのに苦労しています...どんな助けも大歓迎です! 何か明確にできることがあれば教えてください。