Sintomi
Considerare lo scenario descritto di seguito:
-
Si dispone di un computer in cui è installato Microsoft SQL Server 2012.
-
Si dispone di una query che contiene un'istruzione case in un'istruzione Select e un'istruzione case in un'istruzione Group by .
-
Le due istruzioni case restituiscono null.
-
Si esegue la query.
In questo scenario viene visualizzato il messaggio di errore seguente:
Msg 8120, livello 16, stato 1, riga 3Column ' <nome colonna>' non è valido nell'elenco di selezione perché non è contenuto in una funzione di aggregazione o nella clausola Group by.
Ad esempio, eseguire la query seguente: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 Nella query l'istruzione "When 1 = 2 Then T1. Col1 else 10" restituisce 10. Quando sostituisci "10" usando NULL, questo problema si verifica.Nota Questo problema non si verifica quando si rimuove una delle istruzioni case dall'istruzione Select o dall'istruzione Group by .
Risoluzione
Dopo aver applicato la correzione, è necessario abilitare un contrassegno di traccia per eseguire l'hotfix. Contattare il supporto tecnico Microsoft per applicare la correzione.
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 6 per SQL Server 2012 SP1 /en-us/help/2874879
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".