Sintomas
Considere o seguinte cenário:
-
Tem um computador que tem o Microsoft SQL Server 2012 instalado.
-
Tem uma consulta que contém uma declaração CASE numa declaração SELECT e uma declaração CASE num comunicado do GRUPO POR.
-
As duas declarações do CASO avaliam a NU.
-
Faça a consulta.
Neste cenário, recebe a seguinte mensagem de erro:
Msg 8120, Nível 16, Estado 1, Linha 3Column '<nome da coluna>' é inválido na lista selecionada porque não está contido numa função agregada ou na cláusula GROUP BY.
Por exemplo, executou 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 afirmação "when 1=2 then t1.col1 else 10" avalia para 10. Quando substitui "10" utilizando NU, esta questão ocorre.NotaEsta questão não ocorre quando remove qualquer uma das declarações case da declaração SELECT ou do comunicado DO GRUPO POR.
Resolução
Depois de aplicar a correção, tem de ativar uma bandeira de traço para fazer funcionar o hotfix. Contacte o suporte da Microsoft quando tiver de aplicar esta correção.
O problema foi corrigido pela primeira vez na seguinte atualização cumulativa 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 que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".