Comptage incorrect d'une colonne SQL

J'ai un problème pour savoir pourquoi une requête que j'écris count les vues globales pour une page et non pour chaque organisation, elle devrait sortir comme 19 et 8 mais quand j'exécute la requête elle sort comme vue de page 27 chaque le rest de la requête semble fonctionner correctement. Quelqu'un at-il une idée pourquoi? Merci Thomas

SELECT orgID, orgName, (SELECT COUNT (rvSessionKey) FROM tblReport LEFT OUTER JOIN tblReportView ON rptID = rv_rptID WHERE rpt_orgID IN (1002,1047) AND rvEmail NOT LIKE '%support%' AND rpt_qtrID IN (1)) AS [Page View], COUNT( DISTINCT rvSessionKey ) AS [Views], COUNT(DISTINCT rsShareKey) AS [Users], ISNULL(ROUND(AVG(CAST(pfRating AS FLOAT)), 1), 0) AS [Avg Page Rating] FROM tblReport LEFT OUTER JOIN tblReportView ON rptID = rv_rptID INNER JOIN tblReportShare ON rs_rptID = rptID LEFT OUTER JOIN tblPageFeedback ON pfEmail = rsEmail INNER JOIN PMaster.dbo.tblOrganisation ON orgID = rpt_orgID WHERE rvEmail NOT LIKE '%support%' AND orgID IN (1002,1047) AND rpt_qtrID IN (1) AND rvPage NOT LIKE 'Arts' GROUP BY orgID, orgName ORDER BY orgName 

Vous pouvez probablement find un moyen de ne pas avoir à faire cette sous-requête, mais pour le faire fonctionner, vous devez append une corrélation entre l'ID orgID de votre sous-requête [Page View] et celui de la requête principale. Il est un peu difficile de vous donner un exemple complet puisque vous ne nommez pas tous vos noms de colonnes, mais quelque chose comme ça dans la sous-requête [Page View] devrait le faire fonctionner:

 SELECT COUNT (rvSessionKey) FROM tblReport tt LEFT OUTER JOIN tblReportView ON rptID = rv_rptID WHERE rpt_orgID IN (1002,1047) AND tt.rpt_orgID = tblReport.orgID --Correlation to the outside query AND rvEmail NOT LIKE '%support%' AND rpt_qtrID IN (1)) AS [Page View], 

Supprimez complètement la sous-requête. COUNT(rvSessionKey) vous donnera le nombre d'inputs dans l'set sélectionné pour l'organisation groupée. Je suppose que cela vous donne le nombre de pages, et COUNT(DISTINCT rvSessionKey) vous donne le nombre de sessions:

 SELECT orgID, orgName, COUNT (rvSessionKey) AS [Page View], COUNT( DISTINCT rvSessionKey ) AS [Views], COUNT(DISTINCT rsShareKey) AS [Users], ISNULL(ROUND(AVG(CAST(pfRating AS FLOAT)), 1), 0) AS [Avg Page Rating] FROM .......