Résolution des erreurs GROUP BY

Le tableau suivant fournit une liste des messages d'erreur GROUP BY et indique les solutions possibles.

Numéro d'erreur

Message d'erreur

Comment résoudre l'erreur

102

 Syntaxe incorrecte près de ','.

Réécrivez la requête afin que les jeux de regroupements apparaissent dans la clause GROUP BY sous la forme d'une liste GROUPING SETS explicite. Par exemple, GROUP BY C1, (C2,…, Cn) provoquera cette erreur. Réécrivez la requête sous la forme GROUP BY C1, GROUPING SETS( (C2,…, Cn) ) ou GROUP BY C1, C2,…, Cn.

130

Impossible d'effectuer une fonction d'agrégation sur une expression qui contient un agrégat ou une sous-requête.

Récrivez la requête afin qu'un agrégat de fonction de regroupement, ou une sous-requête n'apparaisse pas sous la forme d’un argument d'une autre fonction de regroupement ou agrégat.

147

Un agrégat ne peut apparaître dans la clause WHERE que s’il est présent dans une sous-requête contenue dans une clause HAVING ou une liste de sélection, et si la colonne en cours de regroupement est une référence externe.

Supprimez la fonction de regroupement ou l’agrégat de la clause WHERE.

157

Un agrégat ne peut pas apparaître dans la liste de définitions d'une instruction UPDATE.

Supprimez la fonction de regroupement ou l’agrégat de la liste de définitions d'une instruction UPDATE.

158

Un agrégat ne peut pas apparaître dans la clause OUTPUT.

Supprimez la fonction de regroupement ou l’agrégat de la clause OUTPUT.

162

Expression non valide dans la clause TOP.

Supprimez la fonction de regroupement ou l'agrégat de la clause TOP.

174

La fonction GROUPING requiert 1 argument.

Modifiez la liste d'arguments de la fonction GROUPING () afin qu’il y ait exactement 1 argument.

175

Un agrégat ne peut pas apparaître dans une expression de colonne calculée ou contrainte CHECK.

Supprimez la fonction de regroupement ou l’agrégat des colonnes calculées et contraintes CHECK dans l'instruction DDL.

189

La fonction GROUPING_ID nécessite de 0 à 32 arguments.

Ramenez le nombre d'arguments pour la fonction GROUPING_ID () à 32 ou moins.

1015

Un agrégat ne peut apparaître dans une clause ON que s’il est présent dans une sous-requête contenue dans une clause HAVING ou une liste de sélection, et si la colonne en cours de regroupement est une référence externe.

Supprimez la fonction de regroupement ou l’agrégat de la clause ON.

1028

Les options CUBE, ROLLUP et GROUPING SETS ne sont pas autorisées dans une clause GROUP BY ALL.

Réécrivez la requête afin que l'option GROUP BY ALL ne comporte pas les mots clés GROUPING SETS, CUBE, ROLLUP, WITH CUBE, ou WITH ROLLUP.

4101

Les agrégats situés à droite d’une clause APPLY ne peuvent pas référencer des colonnes du côté gauche.

Supprimez la fonction de regroupement ou l’agrégat du côté droit de la clause APPLY.

4113

GROUPING | GROUPING_ID n'est pas une fonction de fenêtrage valide et ne peut pas être utilisé avec la clause OVER.

Réécrivez la requête afin que la fonction GROUPING() ou GROUPING_ID () ne soit pas utilisée avec une clause OVER.

4142

Les agrégats ne sont pas autorisés dans la liste RECEIVE.

Supprimez la fonction de regroupement ou l’agrégat de la liste RECEIVE.

5310

Les agrégats ne sont pas autorisés dans la liste VALUES d'une instruction INSERT.

Supprimez la fonction de regroupement ou l’agrégat de la liste VALUES d'une instruction INSERT.

8161

L’argument [n] de la fonction [GROUPING | GROUPING_ID] ne correspond pas à aucune des expressions dans la clause GROUP BY.

Vérifiez que chaque argument de la fonction GROUPING ou GROUPING_ID correspond à un élément de regroupement dans la clause GROUP BY et que tous les arguments de la fonction GROUPING et GROUPING_ID ont la même portée.

Dans l'exemple suivant, la référence à la table T (de la requête principale) dans la sous-requête provoquera une erreur.

SELECT T.b, SUM(T.x)
FROM T
GROUP BY T.b 
HAVING EXISTS
(SELECT 1
FROM T1
GROUP BY T1.a
HAVING 
GROUPING_ID(T1.a, T.b) = 1
)

8661

Impossible de créer l''index en cluster <indexname > sur la vue < viewname> parce que la clé d'index inclut des colonnes qui ne sont pas dans la clause GROUP BY. Envisagez d'éliminer de la clé d'index les colonnes qui ne sont pas dans la clause GROUP BY.

Vous ne pouvez pas créer de vue indexée lorsque la définition de la vue contient une clause GROUP BY comportant l'élément (), total général.

10119

Impossible de créer l’index en cluster <indexname> sur la vue < viewname> parce qu'il contient un opérateur CUBE, ROLLUP ou GROUPING SETS. Envisagez de ne pas indexer cette vue.

Une vue indexée ne peut pas être créée lorsque la définition de la vue contient une clause GROUP BY générale.

10702

Les options WITH CUBE, et WITH ROLLUP ne sont pas autorisées dans une spécification ROLLUP, CUBE ou GROUPING SETS.

Réécrivez la requête afin qu'il n'y ait aucune combinaison des mots clés non-ISO WITH CUBE ou WITH ROLLUP et des mots clés compatibles ISO GROUPING SETS, CUBE ou ROLLUP.

10703

Nombre de jeux de regroupement trop élevé. Le nombre maximal est 4096.

Ramenez le nombre de jeux de regroupement dans une clause GROUP BY générale à 4096 ou moins.

10706

Trop d'expressions sont spécifiées dans la clause GROUP BY. Le nombre maximal est 32 lorsque les jeux de regroupement sont fournis.

Ramenez le nombre d’éléments de regroupement distincts dans une clause GROUP BY générale à 32 ou moins.

10708

Les constructions de regroupement CUBE () et ROLLUP () ne sont pas autorisées dans le mode de compatibilité actuel. Elles ne sont autorisées qu’en mode 100 ou supérieur.

Vous ne pouvez pas utiliser CUBE () et ROLLUP() en mode de compatibilité 90. Utilisez la syntaxe WITH CUBE, WITH ROLLUP ou GROUPING SETS.