2012-07-04 8 views
10

Olası Çoğalt: Bir "ORDERNUM" alanına tarafından sipariş kayıtların bir listesini almak için arıyorum
Case Order by using NullSQL Server 2005: NULL değerleri ile Sipariş sonunda

. Ordernum alanı bir int alanıdır. Bu alan, bir kullanıcı tarafından ayarlanana kadar NULL olarak başlar. NULL girişlerinin listenin sonunda görünmesini istiyorum.

şöyle bir sorgu inşa ediyorum:

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

ben [largestInt] için olası en büyük int değerini girebilir biliyorum ama bir değişkenle [largestInt] yerine istiyoruz. Mümkün mü?

cevap

25

Altta NULL değerleri sipariş etmenin bir yolunu buldum.

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

Oldukça güzel benim ihtiyaçlarını karşılar. Benim soru şimdi:

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

Bunu yapmanın doğru yolu budur. Ama cevabın, aynı anda Googling'im olan – Lamak

+0

sorgunuzun hemen hemen aynı anda gönderilmesinin garip olduğunu düşünüyorum. Toplam işlevi almadan "max int" gibi şeyler aramak gerçekten zor. Aynı zamanda cevap ile bir soru göndermek mümkün, yaptığım budur. :) – dangowans

+3

Mümkün olduğunu biliyorum, bununla ilgili bir sorun yok. Ama bu soru aslında burada SO üzerinde birçok kez cevaplanan bir kopyasıdır, bu yüzden burada hızlı bir arama bu aynı şeyi döndürürdü – Lamak