あなたがここ6
前に、何にでも24時間を追加CASE
ステートメントを実行して、独自のソート順を宣言することができますが、それは実際にやっているかを見ることができますので、私は列としてそれを含めました:
SELECT
Sum(Qty) as [Sum],
Datepart(hour, saletime) AS [Hour],
CASE
WHEN Datepart(hour, saletime) >= 6 THEN Datepart(hour, saletime)
ELSE Datepart(hour, saletime) + 24
END AS [SortOrder]
FROM
MyTable
ORDER BY
SortOrder
出力:
Sum Hour SortOrder
2 6 6
3 7 7
17 8 8
-- -- -- Skipping rows for brevity
18 3 27
13 4 28
2 5 29
しかし、あなたは、カラムとしてSortOrder
をしたくない場合は、単にORDER BY
代わりにそれを移動:
SELECT
Sum(Qty) as [Sum],
Datepart(hour, saletime) AS [Hour]
FROM
MyTable
ORDER BY
CASE
WHEN Datepart(hour, saletime) >= 6 THEN Datepart(hour, saletime)
ELSE Datepart(hour, saletime) + 24
END
EDIT:質問自体にAaron Bertrand's毎のコメント、私は私のクエリを更新しましたhh
の代わりにhour
を使用してください。彼が提供したリソースはseen hereです。
クエリ – bc004346
を提供してください私は、コードスニペットに基づいて、SQL Serverのを追加しました。 –
'Datepart(hh、saletime)> = @ Varの場合はDatepart(hh、saletime) - @ var else Datepart(hh、saletime)24- @ VAR end'で渡されます。 – xQbert