Différence entre ISNULL (SUM (x), 0) ou SUM (ISNULL (x, 0) dans le serveur SQL)
Lequel des éléments suivants est correct?
SUM(ISNULL(Sales,0)) AS Sales,
ISNULL(SUM(Sales),0) AS Sales,
Ou les deux sont-ils corrects?
source d'informationauteur Alborz
Vous devez vous connecter pour publier un commentaire.
Ils reviennent tous les deux le même, sauf si vous exécutez une requête sur un jeu de résultats vide.
Retourne
La
SUM(ISNULL(Sales,0))
version permettrait d'éviter l'ANSI mises en garde sur l'agrégation desNULL
.Une autre différence est que le type de données de la colonne résultat de
ISNULL(SUM(Sales),0)
n'est pas considéré comme nullable.Essayez ceci:
Vous obtiendrez 21, 21, 0, et la valeur NULL. Si vous ne voulez pas gérer les valeurs null, alors la fonction ISNULL(SUM(X),0) est le chemin à parcourir.
Le premier dit
La SOMME de toutes les Ventes de terrain, et si le champ est NULL, le traiter comme zéro.
Le deuxième dit résumer le domaine des ventes, et si le total est NUL, rapport de un à zéro à la place...
Toutefois, la SOMME() la commande ignore la valeur NULL (bien que vous serez averti à ce sujet), de sorte que la première cause de ne pas vous obtenez le message d'erreur
Il y a une différence oui. Si je ne me trompe pas
de sorte que le premier cas
allait changer la valeur null à 0, puis d'une synthèse qui permettrait le retour d'5
tandis que le second cas
Serait de retourner la valeur null dans les mêmes données