Symptom
Tänk dig följande situation:
-
Du har en dator med Microsoft SQL Server 2012 installerat.
-
Du har en fråga som innehåller en Case -programsats i ett Select -uttryck och en Case -sats i en Group by -sats.
-
De två Case -instruktionerna utvärderas till null.
-
Du kör frågan.
I det här scenariot visas följande fel meddelande:
Meddelande 8120, nivå 16, tillstånd 1, rad 3Column "<kolumn namn> ' är ogiltigt i SELECT-listan eftersom den inte finns i en mängd funktion eller Group by-satsen.
Du kör exempelvis följande fråga: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 I frågan returnerar uttrycket "när 1 = 2 sedan T1. col1 Else 10". När du ersätter "10" genom att använda NULL uppstår det här problemet.Obs! Det här problemet uppstår inte när du tar bort en Case -programsats från Select -satsen eller från Group by -satsen.
Lösning
När du har tillämpat korrigeringen måste du aktivera en spårnings flagga för att den ska fungera. Kontakta Microsoft support när du behöver använda den här korrigeringen.
Problemet är först åtgärdat i den kumulativa uppdateringen av SQL Server.
Kumulativ uppdatering 6 för SQL Server 2012 SP1 /en-us/help/2874879
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".