2011-01-21 2 views
0

J'ai défini un projet de création de rapports dans lequel je voudrais obtenir des statistiques pour mes tables et les intégrer par la suite dans un service Web. Pour les requêtes suivantes cependant, je reçois des résultats incorrects et je noterai où ci-dessous:Générateur de rapports - requêtes renvoyant des résultats incorrects

1 - Obtenez le nombre de nouvelles entrées pour une journée

SELECT COUNT(*) AS RecordsCount,CAST(FLOOR(CAST(dateadded AS float)) 
AS datetime)as collectionDate 
FROM TFeed GROUP BY CAST(FLOOR(CAST(dateadded AS float)) 
AS datetime) order by collectionDate 

donné fonctionne très bien et je suis en mesure de mettre cette dans un graphique à barres avec succès.

2 - Obtenez le top 10 des mots clés les plus hauts dossiers par searchterm demandé par un client donné au cours des 10 derniers jours

SELECT TOP 10 searchterm, clientId, COUNT(*) AS TermResults FROM TFeed 
where dateadded > getdate() - 10 GROUP BY 
searchterm,clientId order by TermResults desc 

ne fonctionne pas Si je fais une requête dans la base de données pour un de ces termes qui renvoie 98 dans le rapport, le résultat est 984 dans la base de données.

3 - Je dois également connaître le nombre de nouveaux enregistrements par client pour un jour donné.

Aussi je me demandais s'il est possible de mettre ces requêtes dans un rapport et pas des rapports individuels pour chaque requête ce qui n'est pas un gros problème, mais devoir couper et coller dans un doc est fastidieux.

Toutes les idées apprécié

Répondre

2

Pour # 2,

WITH tmp as 
(
SELECT clientId, searchTerm, COUNT(1) as TermResults, 
    DENSE_RANK() OVER (partition by clientId 
    ORDER BY clientId, COUNT(1) DESC) as rnk 
FROM TFeed 
WHERE dateadded > GETDATE() - 10 
GROUP BY clientId, searchterm 
) 
SELECT * 
FROM tmp 
WHERE rnk < 11 

RANG USE() si vous voulez sauter un rang s'il y a deux matches (se laisse dire terme1 et terme2 ont le même nombre de comptent, ils sont à la fois de rang 1 et le terme suivant seront classés 3 au lieu de 2

Pour # 3,
vous pouvez définir plusieurs ensembles de données au sein d'un rapport. Ensuite, vous suffit de créer trois graphiques/table et associent les w avec leurs ensembles de données respectifs

+0

très utile, fonctionne très bien dans le serveur sql mais dans le générateur de rapports, le '<' génère une erreur, une syntaxe illégale, attendez-vous à un nom de début valide ;; va essayer de trouver un moyen de contourner cela. – vbNewbie

+0

vous pouvez simplement créer une procédure stockée dans le serveur SQL et appeler cette procédure stockée à partir de votre rapport SSRS – clyc

Questions connexes