TSQL

2016-03-28 24 views
1

'da depolanan durumu geri çağırma Sorguları kategorilere ayırmak için sık kullandığım bir dizi vaktim var ve her seferinde kullandıklarımın basitleştirilmiş halini döndürebileceğimi umduğumda kayıtlı bir dosyadan kopyalayıp yapıştırmak yerine. .TSQL

CASE 
WHEN source = 'x' AND othersource = 'y' THEN 'region' 
WHEN subsource = 'm' AND othersubsource = 'n' THEN 'district' 
WHEN littlesource = 'a' AND otherlittlesource = 'b' THEN 'office' 
ELSE 'ERROR - LOOK AT ME' 
END AS "Service Channel" 

@RDOCASE yukarıda tam davanın depolanmış kısa formlu versiyonu listeledik edilir
@RDOCASE 

içine. Bir veritabanında saklanan ve herhangi bir sorguda bu veritabanında çalıştırılmak üzere herhangi bir zamanda geri çağrılabilmesi dışında, bir sorgunun başında bir değişken bildirmek gibi olacağını düşünüyorum.

cevap

2

Hesaplanan bir sütunun sizin için çalışmasına izin vermelisiniz. . . sütunları hepsi aynı tablodan geldiğini varsayarak: Değerler birden çok tablodan geliyorsa

ALTER TABLE t ADD ServiceChannel AS (<your case here>) 

, o zaman bu amaçla bir görünümünü kullanabilirsiniz. Ya da ilgili değişkenleri geçmek istiyorsanız, bir skaler işlevi.

Bir yan notta: sütun takma adları için tek tırnak kullanmayın. Bu sadece kafa karıştırıcı. Dize ve tarih sabitleri için tek tırnak kullanılmalıdır.

+0

Koşullar, birden çok tablodan gelir. Skaler fonksiyonun ne olduğundan emin değilim. Bir skalar fonksiyon için ilgili değişkenler nelerdir? – bteague

+0

@bteague. . . Bir skaler işlevi, bir tablo döndüren bir işlevin aksine, tek bir değer döndüren (kullanıcı tanımlı) bir işlevdir. –