SQL Server 2005 Reporting Services: Comment calculer le nombre de lignes qui ne sont pas nulles? Tous les conseils pour calculer les totaux?
À l'aide de Reporting Services de SQL Server 2005: Est-il un moyen pour compter uniquement les enregistrements qui ne sont pas null; similaires à "NBVAL" dans Excel? Je pense que ce serait très simple processus, mais rien, j'ai essayé a travaillé. Par exemple, j'ai essayé d'utiliser l'expression suivante pour "Terminé", qui est une colonne je suis en train de compter:
=count(IIF(Champs!Terminé.Value="FIN"))
Toutefois, cela jette le "mauvais nombre d'arguments d'erreur". "Terminé" aura une valeur de "Fin" ou nulle.
Si nécessaire, je peut essayer de travailler ça dans ma requête SQL, mais la requête est déjà incroyablement compliqué.
Aussi, j'ai trouvé très peu de documentation pour savoir comment calculer le rapport des totaux, et comment total de groupes. Quelqu'un aurait-il des recommandations sur ce qui à utiliser comme référence?
Mise à jour: après une inspection plus poussée, l'expression =SOMME(IIF(IsNothing(Champs!Terminé.Valeur),0,1)), en effet, de retour le nombre d'enregistrements. J'ai fait l'erreur de penser que le rapport de dépouillement le nombre d'enregistrements dans le rapport réel avec la "fin" d'une valeur. Depuis les groupes du rapport sur "Terminé", "Fin" ne s'affiche une fois dans le rapport pour chaque ID unique (également être groupé, ci-dessus). Donc j'ai vraiment besoin d'être comptage (suming?) basé sur les sous-totaux...si c'est encore possible.
OriginalL'auteur user329266 | 2010-06-14
Vous devez vous connecter pour publier un commentaire.
Faire exactement ce que vous avez besoin maintenant.
Merci, Kenneth. J'ai essayé votre nouvelle expression, mais le résultat est plus proche du nombre total de valeurs nulles que le nombre de non valeurs null. Essayer de comprendre ce qu'est le contraire de "IsNothing" peut-être.
Cela fonctionne parfaitement pour moi. RS2005? Swap de l'0 & 1 pour tester votre théorie.
Juste essayé de remplacer le 0 et le 1. Aussi essayé d'utiliser le Comte et pas en Somme, puisque je veux le nombre total de résultats qui ne sont pas null. Les résultats sont les mêmes lorsque je swap de 0 à 1, comme ils sont dans leurs positions d'origine. Juste pour le plaisir d'essayer quelque chose de différent, j'ai aussi essayé Somme, avec 0 et 1, à l'origine des positions et puis échangé. Ni renvoie des résultats corrects. Oui, c'est de Reporting Services 2005.
OriginalL'auteur Kenneth
Généralement, si vous essayez de somme d'une valeur de colonne, alors vous devez vous rappeler que
NULL
+ tout estNULL
. Donc, pour contourner ce problème, vous pouvez faire quelque chose comme:Ce que ce code n'est assurez-vous que si col1 est un
NULL
valeur, nous mettre à 0 avant d'essayer de la somme ainsi que l'on obtiendra toujours valide somme résultat.Donc quand faire les choses comme obtenir le rapport des totaux, etc., il est important de se rappeler de cette étape au moment de résumer vos valeurs.
Que pour l'obtention d'enregistrements qui ne sont PAS NULL, vous devez définir ce que cela signifie. Est-ce à dire "chaque colonne de la ligne ne doit PAS être NULL", seulement certains d'entre eux, etc?
En général, vous pouvez cocher une colonne not null par l'émission d':
Vous devez répéter que la clause where condition pour toutes les colonnes que vous souhaitez ne pas être
NULL
.SELECT SUM(ISNULL(COL1,0))...
Oui, ils sont équivalents dans cet exemple.
Ok, mais je vais essayer de compter uniquement les valeurs null dans le rapport, par opposition à l'instruction SQL...à moins qu'il existe un moyen de le brancher dans le rapport à l'extérieur de l'instruction SQL sur l'onglet Données? J'ai été conseillé de ne pas utiliser les sous-rapports, si c'est ce que vous pensez.
Réitérer du post ci-dessous, la colonne, je suis en train de compter (pas de somme) ont une valeur de "fin", ou il sera null.
Je ne comprends pas vraiment ce qu'est la différence entre "les valeurs null dans le rapport" et "les valeurs nulles dans les données". Si vous souhaitez obtenir un décompte du nombre de fois qu'une même colonne est null, alors vous pourriez faire "SELECT COUNT(*) FROM your_table OÙ col1 EST NULLE". Peut-être que vous pouvez modifier à votre question et de fournir des données réelles et de ce qui vous attend à la sortie.
OriginalL'auteur dcp
Dans votre dernier commentaire, vous dites "j'ai vraiment besoin d'être comptage (suming?) basé sur les sous-totaux...si c'est encore possible"
Une manière que je contourner ce dans SSRS est de calculer un ensemble de données pour le rapport, qui a des colonnes pour mon sous-total des valeurs. Fondamentalement, je précalculer les sous-totaux, et puis j'ai ces valeurs disponibles partout dans mon rapport. Cela peut être fait dans un rapport datamart, ou dans la procédure stockée qui produit le jeu de données. Bien que ce est un peu maladroite, je trouve qu'il est parfois plus facile que d'essayer de plier SSRS à ma volonté. Pensé que je le mentionne dans le cas où il est utile.
Vous pouvez exécuter ce code pour obtenir un visuel de ce que je veux dire -
OriginalL'auteur soo