Belirtiler
Aşağıdaki senaryoyu inceleyin:
-
Microsoft SQL Server 2012 'in yüklü olduğu bir bilgisayarınız var.
-
Select deyiminde Case deyimi Içeren BIR sorgunuz ve Group By deyiminde bir Case deyimi vardır.
-
İki Case deyimi null olarak değerlendirilir.
-
Sorguyu çalıştırırsınız.
Bu senaryoda, aşağıdaki hata iletisini alırsınız:
İleti 8120, düzey 16, durum 1, çizgi 3Column ' <sütun adı> ', bir toplama IŞLEVINDE veya Group by yan tümcesinde bulunmadığı için, seçim listesinde geçersiz.
Örneğin, aşağıdaki sorguyu çalıştırırsınız:create database testgouse testgocreate table tvt ( v1t binary(1) null)create table tln (ln numeric(5) not null)goselectcase when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endfrom (select t2.v1t as col1, 10 as col2 from tvt t2) t1group by case when 1=2 then t1.col1else 10end,casewhen t1.col1 = 2 then t1.col2endgo Sorguda, "1 = 2 then T1. Sütun1 Else 10" deyimi 10 olarak değerlendirilir. "10" değerini NULL kullanarak değiştirdiğinizde bu sorun oluşur.NotBu sorun, Select deyimindeki veya Group By deyiminden Case deyimlerinden birini kaldırdığınızda oluşmaz.
Çözüm
Düzeltmeyi uyguladıktan sonra, düzeltmenin çalışması için bir izleme bayrağı etkinleştirmeniz gerekir. Bu düzeltmeyi uygulamanız gerektiğinde lütfen Microsoft desteğine başvurun.
Sorun ilk olarak SQL Server 'ın aşağıdaki toplu güncelleştirmesinde giderilmiştir.
SQL Server 2012 SP1 için toplu güncelleştirme 6 /en-us/help/2874879
Her bir SQL Server toplu güncelleştirmesi, önceki toplu güncelleştirmeyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. En son SQL Server güncelleştirmelerini gözden geçirin:
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.