SQL Şartlı Nerede

oy
8

@startdate ve @enddate: Birkaç parametre kabul eden bir saklı yordam denilen spGetOrders var. Bu Siparişler tablosu sorgular. Tablodaki sütunların biri ClosedDate denir. o varsa bir sipariş kapalı veya bir tarih değeri edilmemiş ise bu sütun NULL tutacaktır. Biraz değerini alacak bir @Closed parametre eklemek istiyorum. Basit bir dünyada, yapmam mümkün olurdu ..

select * from orders o
where o.orderdate between @startdate AND @enddate
and (if @Closed = 1 then o.ClosedDate IS NULL else o.ClosedDate IS NOT NULL)

Açıkçası bu, ben de benim son çare dinamik sql bakıyorum .. işe, ama cevap gibi görünmeye başlıyor değil ..

Lütfen yardım et..

Oluştur 09/12/2008 saat 17:42
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
14

Bunu dene:

select * from orders o
where o.orderdate between @startdate AND @enddate
and ((@Closed = 1 And o.ClosedDate IS NULL) Or (@Closed = 0 And o.ClosedDate IS NOT NULL))

nerede maddede yapılacak yılında ve OR 's VE karıştırma konusunda dikkatli değişir olun. Bunu yaparken, parantez değerlendirme sırası ÇOK önemlidir kontrol etmek.

Cevap 09/12/2008 saat 17:48
kaynak kullanıcı

oy
2

SQL deyimi:

SELECT *  
FROM orders  
WHERE orderdate BETWEEN @startdate AND @enddate  
AND (@Closed = 1 OR CLosedDate IS NOT NULL)
Cevap 09/12/2008 saat 17:46
kaynak kullanıcı

oy
0

Temelde, bunu yazın.

select * from orders o
where o.orderdate between @startdate AND @enddate
and ((@Closed = 1 and o.ClosedDate IS NULL)
    or (@Closed != 1 and o.ClosedDate IS NOT NULL))

çift, çıkarılabilir

Cevap 09/12/2008 saat 17:50
kaynak kullanıcı

oy
0

Veya bu:

select * from orders o
where o.orderdate between @startdate AND @enddate
and (  (@Closed = 1 AND o.ClosedDate IS NULL)
     OR (ISNULL(@Closed, 0) <> 1 AND o.ClosedDate IS NOT NULL)
     )

tutarsız Yakın bilgiye sahip iki tarih arasındaki tüm siparişler ister gibi görünüyor. diğer öneri muhtemelen kadar iyi (veya daha iyi) ama umarım bu işe ve (ı yazarak gibi diğer önerilerden en belirdi) bana okunabilir olduğundan eminim.

İyi şanslar!

Cevap 09/12/2008 saat 17:48
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more