結果をさまざまな列で並べ替えることができるクエリがありますが、ソート列にNULL値を処理できる必要があります。どんな助けでも大歓迎です。 @Sort
は上の並べ替え、および@pageStart
と@pageEnd
を返すように結果のクエリを語ったintあるために列int型指定されSQL Server:ORDER BY可変列NULL値のCASE文
Table [People]
Columns [Name], [Birthday] (NULLABLE)
クエリ:ここでは一例です。 (私は、行の選択のみを返していますので、私はCTEにネスト[RowNum]
列を使用していますが起こって他の処理もありますが、私は簡単にするため、それを削除しています。。):
;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
私が知っています私は、クエリに私が...いただければ幸いです任意の助け働いていることを適用するに苦労してい
ORDER BY (CASE WHEN [columnName] is NULL THEN 1 ELSE 0 END), [columnName]
:ヌルのようなステートメントで処理することができます!私が何かを明確にすることができたら教えてください。
ありがとう、それは多くのクリーナーになり、ソリューションは素晴らしい動作します – Brett
@Demsはパフォーマンスに関していくつかの良い点を作りますが、私は本当にあなたのデータセットとサーバーに依存していると思います。 Afterallのパフォーマンスはあなたにとって受け入れられるかもしれません。 – Goody