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