SQL’de İç İçe 10 Case (Case When Then Else End) kullanımı sorunu

10.07.2017 05:00:00 (201 Kez okundu)

Merhaba arkadaşlar, sql tarafında birden fazla koşul için case when olayının 10 dan fazla nasıl kullanabiliriz öğrenelim.

Merhaba arkadaşlar,

Baktım ki aradan baya bir zaman geçmiş.

Bir şeyler yazmanın vakti geldi diye düşündüm.

Bugün yaptığım işler arasında takıldığım sorunu nasıl aştığım konusunda sizlere bilgi vereceğim.

Order By işleminde Case olayını kullanırken iç içe 10 dan fazla Case kullanılamaz hatası aldım.

Sorunu şu şekilde çözdüm.

Yapmak istediğim iki tane Case'i Tek Case içinde tekrarladım.

Şöyleki aşağıdaki kodda gördüğünüz üzere, 11 Case iç içe.
Ben birbirlerine yakın olduğu için FirsName ve SurName alanlarını ele alarak aşağıdaki gibi değiştirdim.

ORDER BY

CASE WHEN @OrderByType = 'ASC' THEN

(Case When @OrderByName = 'UserName' Then X.UserName Else

(Case When @OrderByName = 'FirsName' Then X.FirsName Else

(Case When @OrderByName = 'Surname' Then X.Surname Else

(Case When @OrderByName = 'Name' Then X.[Name] Else

(Case When @OrderByName = 'EMail' Then X.EMail Else

(Case When @OrderByName = 'DateLogin' Then X.DateLogin Else

(Case When @OrderByName = 'BirthDate' Then X.BirthDate Else

(Case When @OrderByName = 'LastActivity' Then X.LastActivity Else

(Case When @OrderByName = 'Point' Then X.Point Else

(Case When @OrderByName = 'VoucherCount' Then X.VoucherCount Else

ID End) End) End) End) End) End) End) End) End) End) END ASC,

CASE WHEN @OrderByType = 'DESC' THEN

(Case When @OrderByName = 'UserName' Then X.UserName Else

(Case When @OrderByName = 'FirsName' Then X.FirsName Else

(Case When @OrderByName = 'Surname' Then X.Surname Else

(Case When @OrderByName = 'Name' Then X.[Name] Else

(Case When @OrderByName = 'EMail' Then X.EMail Else

(Case When @OrderByName = 'DateLogin' Then X.DateLogin Else

(Case When @OrderByName = 'BirthDate' Then X.BirthDate Else

(Case When @OrderByName = 'LastActivity' Then X.LastActivity Else

(Case When @OrderByName = 'Point' Then X.Point Else

(Case When @OrderByName = 'VoucherCount' Then X.VoucherCount Else

ID End) End) End) End) End) End) End) End) End) End) END DESC

Sonuç olarak 10 Case iç içe. İçlerinden bir tanesinde de 2 Case iç içe olmuş oldu ve sorun çözüldü.

CASE WHEN @OrderByType = 'ASC' THEN

(Case When @OrderByName = 'UserName' Then X.UserName Else

(Case When @OrderByName = 'FirsName' or @OrderByName = 'Surname' Then CASE WHEN @OrderByName = 'FirsName' THEN X.FirsName ELSE X.Surname END Else

(Case When @OrderByName = 'Name' Then X.[Name] Else

(Case When @OrderByName = 'EMail' Then X.EMail Else

(Case When @OrderByName = 'DateLogin' Then X.DateLogin Else

(Case When @OrderByName = 'BirthDate' Then X.BirthDate Else

(Case When @OrderByName = 'LastActivity' Then X.LastActivity Else

(Case When @OrderByName = 'Point' Then X.Point Else

(Case When @OrderByName = 'VoucherCount' Then X.VoucherCount Else

ID End) End) End) End) End) End) End) End) End) END ASC,

CASE WHEN @OrderByType = 'DESC' THEN

(Case When @OrderByName = 'UserName' Then X.UserName Else

(Case When @OrderByName = 'FirsName' or @OrderByName = 'Surname' Then CASE WHEN @OrderByName = 'FirsName' THEN X.FirsName ELSE X.Surname END Else

(Case When @OrderByName = 'Name' Then X.[Name] Else

(Case When @OrderByName = 'EMail' Then X.EMail Else

(Case When @OrderByName = 'DateLogin' Then X.DateLogin Else

(Case When @OrderByName = 'BirthDate' Then X.BirthDate Else

(Case When @OrderByName = 'LastActivity' Then X.LastActivity Else

(Case When @OrderByName = 'Point' Then X.Point Else

(Case When @OrderByName = 'VoucherCount' Then X.VoucherCount Else

ID End) End) End) End) End) End) End) End) End) END DESC

Sizlerinde karşılaşabileceğiniz sipesifik bir hata olabilir. Ufakta olsa katkısı olur umarım. 

Yorumlar

Ortalama

Henüz değerlendirilmemiş.
Henüz yorum yapılmamış.
İlk yorumu siz yapın.

Bir Yorum Yaz