Symptômes
Prenons l’exemple du scénario suivant :
-
Vous avez un ordinateur sur lequel Microsoft SQL Server 2012 est installé.
-
Vous avez une requête qui contient une instruction case dans une instruction Select et une instruction case dans une instruction Group by .
-
Les deux instructions de cas ont pour résultat la valeur null.
-
Vous exécutez la requête.
Dans ce scénario, le message d'erreur suivant s'affiche :
MSG 8120, niveau 16, état 1, ligne 3Column' <nom de la colonne> 'n’est pas valide dans la liste Sélectionner, car il n’est pas inclus dans une fonction d’agrégation ou dans la clause Group by.
Par exemple, vous exécutez la requête suivante :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 Dans la requête, l’instruction "If 1 = 2 Then T1. col1 else 10" est évaluée à 10. Lorsque vous remplacez « 10 » en utilisant NULL, ce problème se produit.RemarqueCe problème ne se produit pas lorsque vous supprimez l' une des affirmations de l’instruction Select ou de l’instruction Group by .
Résolution
Après avoir appliqué le correctif, vous devez activer un indicateur de suivi pour que le correctif fonctionne. Veuillez contacter le support technique de Microsoft lorsque vous devez appliquer ce correctif.
Le problème a été résolu dans la mise à jour cumulative suivante de SQL Server.
Mise à jour cumulative 6 pour SQL Server 2012 SP1 /en-us/help/2874879
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Statut
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».