Sorgulama ve aggregation
CASE ve koşullu ifadeler
Bir sorgunun içinde iş kurallarını görünür kıl.
Kavramı anlayalım
CASE bir değer üreten ifadedir; prosedürel IF yerine bütün sorguyu kontrol etmez. Simple CASE eşitlik karşılaştırır, searched CASE farklı koşulları sırayla sınar. İlk doğru WHEN seçilir. ELSE yoksa eşleşmeyen satır NULL üretir.
Dalların sonuç tipleri ortak bir tipe dönüşebilmelidir. Bir dalda sayı, diğerinde metin döndürmek beklenmedik dönüşüm hataları verebilir. CASE ile sıfıra bölmenin her koşulda önleneceğini varsayma; özellikle aggregate ifadeler daha önce değerlendirilebilir. NULLIF ile payda korumasını açıkça ifade et.
Etiketler, segmentler, koşullu toplamlar ve sıralama kuralları için.
CASE’i akış kontrol komutu sanmak; ELSE eksikliğini fark etmemek.
Aynı konu. Üç farklı derinlik.
SELECT ProductName, CASE WHEN Stock = 0 THEN N'Unavailable' ELSE N'In stock' END AS Availability FROM lab.Product;Cable stok dışıdır; diğerleri stokta görünür.
Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.
Önce kendin dene.
Fiyatı 5000 ve üzerindeki ürünlere High, diğerlerine Regular etiketi ver.
Çözümü ve açıklamasını göster
SELECT ProductName, CASE WHEN Price >= 5000 THEN N'High' ELSE N'Regular' END AS PriceBand FROM lab.Product;Etiket yalnız sonuçtadır; ürün fiyatını veya tablodaki veriyi değiştirmez.