Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir Boolean koşullunun doğru mu yanlış olup olmadığına bağlı olarak farklı dal ifadelerini değerlendirir.
Syntax
IIf(Logical_Expression, Expression1 [HINT <hints>], Expression2 [HINT <hints>])
Arguments
IIf fonksiyonu üç argüman alır: iif(<condition>, <then branch>, <else branch>).
Logical_Expression
Doğru (1) veya yanlış (0) olarak değerlendiren bir koşul. Geçerli bir Çok Boyutlu İfadeler (MDX) mantıksal ifadesi olmalıdır.
Expression1 İpucu [Hevesli|Ciddi|Tembel]]
Mantıksal ifade doğru olarak değerlendirildiğinde kullanılır. Expression1, geçerli bir Çok Boyutlu İfadeler (MDX) ifadesi olmalıdır.
Expression2 İpucu [Hevesli|Ciddi|Tembel]]
Mantıksal ifade yanlış olarak değerlendirildiğinde kullanılır. Expression2, geçerli Çok Boyutlu İfadeler (MDX) ifadesi olmalıdır.
Remarks
Mantıksal ifade tarafından belirtilen koşul, bu ifadenin değeri sıfır olduğunda yanlış olarak değerlendirilir. Diğer herhangi bir değer doğru olarak değerlendirilir.
Koşul doğru olduğunda, IIf fonksiyonu ilk ifadeyi döndürür. Aksi takdirde, fonksiyon ikinci ifadeyi döndürür.
Belirtilen ifadeler değerleri veya MDX nesnelerini döndürebilir. Ayrıca, belirtilen ifadelerin tür olarak eşleşmesi gerekmez.
IIf fonksiyonu, arama kriterlerine dayalı bir üye seti oluşturmak için önerilmez. Bunun yerine, belirli bir kümedeki her üyeyi mantıksal bir ifadeye karşı değerlendirmek ve bir alt küme üyesi döndürmek için Filtre fonksiyonunu kullanın.
Note
Eğer herhangi bir ifade NULL olarak değerlendirilirse, bu koşul sağlandığında sonuç kümesi NULL olur.
İpucu, ifadenin nasıl ve ne zaman değerlendirileceğini belirleyen isteğe bağlı bir değiştiricidir. İfadenin nasıl değerlendirildiğini belirterek varsayılan sorgu planını geçersiz kılmanıza olanak tanır.
EAGER, ifadeyi orijinal IIF alt uzayı üzerinde değerlendirir.
STRICT, ifadeyi yalnızca mantıksal koşul ifadesi tarafından oluşturulan kısıtlı alt uzayda değerlendirir.
LAZY, ifadeyi hücre hücre modunda değerlendirir.
EAGER ve STRICT sadece o zamanki IIF dalları için geçerlidirken, LAZY tüm MDX ifadeleri için geçerlidir. Herhangi bir MDX ifadesi, o ifadeyi hücre hücre modunda değerlendiren HINT LAZY ile takip edilebilir.
EAGER ve STRICT ipuçlarında birbirini dışlar; aynı IIF(,,) içinde farklı ifadeler üzerinde kullanılabilirler.
Daha fazla bilgi için, SQL Server Analysis Services 2008'deki IIF Fonksiyon Sorgu İpuçları ve MDX IIF Fonksiyonu ve CASE Açıklaması için Yürütme Planları ve Planı İpuçları bölümlerine bakınız.
Examples
Aşağıdaki sorgu, hesaplanmış bir ölçü içinde IIF'nin basit bir kullanımını göstererek ölçü İnternet Satış Miktarı 10000 dolardan fazla veya daha az olduğunda iki farklı dize değerinden birini döndürmeyi gösterir:
WITH MEMBER MEASURES.IIFDEMO AS
IIF([Measures].[Internet Sales Amount]>10000
, "Sales Are High", "Sales Are Low")
SELECT {[Measures].[Internet Sales Amount],MEASURES.IIFDEMO} ON 0,
[Date].[Date].[Date].MEMBERS ON 1
FROM [Adventure Works]
IIF'nin çok yaygın bir kullanımı, hesaplanan ölçüler içinde 'sıfıra bölünme' hatalarını işlemektir; aşağıdaki örnekte olduğu gibi:
WITH
//Returns 1.#INF when the previous period contains no value
//but the current period does
MEMBER MEASURES.[Previous Period Growth With Errors] AS
([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))
/
([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)
,FORMAT_STRING='PERCENT'
//Traps division by zero and returns null when the previous period contains
//no value but the current period does
MEMBER MEASURES.[Previous Period Growth] AS
IIF(([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)=0,
NULL,
([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))
/
([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)
),FORMAT_STRING='PERCENT'
SELECT {[Measures].[Internet Sales Amount],MEASURES.[Previous Period Growth With Errors], MEASURES.[Previous Period Growth]} ON 0,
DESCENDANTS(
[Date].[Calendar].[Calendar Year].&[2004],
[Date].[Calendar].[Date])
ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Subcategory].&[26])
Aşağıda, Generate fonksiyonu içinde iki kümeden birini geri getirerek Satırlar üzerinde karmaşık bir tuple kümesi oluşturduğu bir örnek verilmiştir:
SELECT {[Measures].[Internet Sales Amount]} ON 0,
//If Internet Sales Amount is zero or null
//returns the current year and the All Customers member
//else returns the current year broken down by Country
GENERATE(
[Date].[Calendar Year].[Calendar Year].MEMBERS
, IIF([Measures].[Internet Sales Amount]=0,
{([Date].[Calendar Year].CURRENTMEMBER, [Customer].[Country].[All Customers])}
, {{[Date].[Calendar Year].CURRENTMEMBER} * [Customer].[Country].[Country].MEMBERS}
))
ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Subcategory].&[26])
Son olarak, bu örnek Plan İpuçları'nın nasıl kullanılacağını gösteriyor:
WITH MEMBER MEASURES.X AS
IIF(
[Measures].[Internet Sales Amount]=0
, NULL
, (1/[Measures].[Internet Sales Amount]) HINT EAGER)
SELECT {[Measures].x} ON 0,
[Customer].[Customer Geography].[Country].MEMBERS ON 1
FROM [Adventure Works]