Sintomas
Considere o seguinte cenário:
-
Você tem um computador com o Microsoft SQL Server 2012 instalado.
-
Você tem uma consulta que contém uma instrução Case em uma instrução Select e uma instrução Case em uma instrução Group by .
-
As instruções de dois casos são avaliadas como NULL.
-
Você executa a consulta.
Nesse cenário, a seguinte mensagem de erro é exibida:
MSG 8120, nível 16, estado 1, linha 3Column <'> nome da coluna ' é inválido na lista de seleção porque não está contido em uma função de agregação ou na cláusula Group by.
Por exemplo, você executa a seguinte consulta: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 Na consulta, a instrução "quando 1 = 2, a T1. Col1 mais 10" é avaliada como 10. Quando você substitui "10" usando NULL, esse problema ocorre.ObservaçãoEsse problema não ocorre quando você remove uma das instruções Case da instrução Select ou da instrução Group by .
Resolução
Depois de aplicar a correção, você precisa habilitar um sinalizador de rastreamento para fazer o hotfix funcionar. Entre em contato com o suporte da Microsoft quando precisar aplicar essa correção.
O problema foi corrigido primeiro na atualização cumulativa a seguir do SQL Server.
Atualização cumulativa 6 para SQL Server 2012 SP1 /en-us/help/2874879
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".