Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie verfügen über einen Computer, auf dem Microsoft SQL Server 2012 installiert ist.
-
Sie verfügen über eine Abfrage, die eine Case -Anweisung in einer Select -Anweisung und eine Case -Anweisung in einer Group by -Anweisung enthält.
-
Die beiden Case -Anweisungen werden auf NULL ausgewertet.
-
Führen Sie die Abfrage aus.
In diesem Szenario wird die folgende Fehlermeldung angezeigt:
Msg 8120, Ebene 16, Zustand 1, Zeile 3Column ' <Spaltenname> ' ist in der Auswahlliste ungültig, da Sie weder in einer Aggregatfunktion noch in der Group By-Klausel enthalten ist.
Führen Sie beispielsweise die folgende Abfrage aus: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 In der Abfrage wird die Anweisung "Wenn 1 = 2 dann T1. Col1 else 10" zu 10 ausgewertet. Wenn Sie "10" durch Verwendung von NULL ersetzen, tritt dieses Problem auf.HinweisDieses Problem tritt nicht auf, wenn Sie eine der Case -Anweisungen aus der Select -Anweisung oder aus der Group by -Anweisung entfernen.
Fehlerbehebung
Nachdem Sie das Update angewendet haben, müssen Sie ein Ablaufverfolgungsflag aktivieren, damit der Hotfix funktioniert. Wenden Sie sich an den Microsoft-Support, wenn Sie diesen Fix anwenden müssen.
Das Problem wurde zuerst im folgenden kumulativen Update von SQL Server behoben.
Kumulatives Update 6 für SQL Server 2012 SP1 /en-us/help/2874879
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Schauen Sie sich die neuesten kumulativen Updates für SQL Server an:
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.