2012-07-04 9 views
10

Powiel możliwe:
Case Order by using NullSQL Server 2005: Zamówienie z wartościami NULL na końcu

szukam, aby uzyskać listę rekordów zamówionych przez "ordernum" pola. Pole ordernum jest polem int. To pole zaczyna się od NULL do momentu ustawienia przez użytkownika. Chciałbym, aby wpisy NULL pojawiły się na końcu listy.

buduję zapytanie następująco:

select *, case when (ordernum is null) then [largestInt] else ordernum end as newordernum 
from tableName 
order by newordernum 

Wiem, że mógłbym wprowadzić wartość dla największej int [largestInt], ale chciałbym, aby zastąpić [largestInt] o zmiennej. czy to możliwe?

Odpowiedz

25

Znalazłem sposób na zamówienie wartości NULL na dole.

http://sqlblog.com/blogs/denis_gobo/archive/2007/10/19/3048.aspx

Spełnia moje potrzeby całkiem ładnie. Moje zapytanie brzmi teraz:

select * 
from tableName 
order by case when ordernum is null then 1 else 0 end, ordernum 
+3

To jest odpowiednia metoda. Ale wydaje mi się dziwne, że twoja odpowiedź została opublikowana prawie dokładnie w tym samym czasie, co twoje pytanie: – Lamak

+0

I googlowałem w tym samym czasie. Naprawdę trudno jest szukać rzeczy typu "max int" bez uzyskania funkcji agregującej. Możliwe jest opublikowanie pytania z odpowiedzią w tym samym czasie, co zrobiłem. :) – dangowans

+3

Wiem, że to możliwe, nie ma z tym problemu. Ale to pytanie jest właściwie duplikatem, na który wiele razy odpowiedziano na SO, więc szybkie wyszukiwanie tutaj zwróciłoby tę samą rzecz. – Lamak

Powiązane problemy