Comment interroger une Table de données dans la mémoire pour remplir un tableau de données

Je suis en train de mettre à jour Microsoft du rapport. Ce qu'il fait est d'écrire le nombre de clients où exclus de ce processus de conversion, et pour quelle raison. Actuellement, le programme écrit toutes les supprimé les clients vers le serveur interroge ensuite revenir à remplir une spécialité de la table avec les résultats.

Voici la requête en cours:

SELECT  DeletedClients.Reason, 
        COUNT(DeletedClients.Reason) AS Number, 
        CAST(CAST(COUNT(DeletedClients.Reason) AS float) 
            / CAST(t.Total AS float) 
            * 100 AS numeric(4, 1)) AS percentage
FROM DeletedClients CROSS JOIN
    (SELECT COUNT(*) AS Total
    FROM DeletedClients AS DeletedClients_1
    WHERE (ClinicID = @ClinicID)) AS t
WHERE (DeletedClients.ClinicID = @ClinicID) 
    AND (DeletedClients.TotalsIdent = @ident)
GROUP BY DeletedClients.Reason, t.Total
ORDER BY Number DESC

Ce que je voudrais faire est de ne pas écrire DeletedClients pour le serveur comme il existe déjà en mémoire dans mon programme comme un DataTable et il est juste de ralentir le rapport et le remplissage de la base de données avec des informations que nous n'avez pas besoin d'enregistrer.

Ma principale question est celle-ci, Soit :

Comment interroger une table de données pour faire une nouvelle dans la mémoire des données de table qui a les mêmes résultats que si j'ai écrit la le serveur SQL et le lire dans la requête ci-dessus?

OU

Comment dans Microsoft Rapports faites-vous une clause group by pour les éléments dans un tableau Matriciel à son tour =Fields!Reason.Value =Fields!Number.Value =Fields!percentage.Value dans quelque chose de similaire pour le résultat retourné par la requête ci-dessus?

  • D'autres exemples ici - dotnetperls.com/datatable-select Sélectionnez("Taille >= 230 ET Sexe = 'm'"); Select("Date > #6/1/2001#");