2017-04-12 3 views
0

Je souhaite créer une requête SQL qui effectuera le comptage pour moi plutôt que dans le code du rasoir. Je souhaite calculer la quantité de dates distinctes dans ma base de données.Groupe de comptage SQL Server CE par

J'ai trouvé que SQL Server CE ne prend pas en charge count(distinct column_name) et au lieu d'utiliser group by serait la solution, mais pour une raison quelconque, je ne pouvais pas le faire fonctionner, qu'est-ce que je fais mal?

SELECT COUNT(date) as date 
FROM Test 
GROUP BY date 

Ce simplement compté chaque jour dans ma base de données et non celles distinctes lors de l'écriture dehors comme ce qui suit

var totalcount = 0; 

foreach (var c in db.Query(query)) 
{ 
    var ttotalcount = c.date; 
    totalcount += ttotalcount; 
} 
<a>@totalcount<a> 

Répondre

1

Mise à jour Votre requête demande pour les comptes de chaque date distincte. Si vous voulez savoir combien de ceux que vous avez vous avez besoin de les résumer. Vous pouvez faire cela imbriquer votre requête avec une requête SUM. Ensuite, utilisez une colonne additionnelle défault à "1", pour permettre de résumer le nombre de lignes (qui devraient être vos dates distinctes). La date peut également être un mot réservé. Vous pouvez essayer d'éviter d'utiliser cela comme nom de colonne.

SELECT SUM(New_Row) as dateSUM from (
    SELECT COUNT(date) as dateCount, 1 as New_Row FROM Test GROUP BY date 
) a 
+0

m'a donné erreur sur' nom de colonne non valide « dateCount » .':/ –

+0

si vous exécutez simplement le SELECT COUNT (date) en tant que dateCount FROM Test GROUP BY date' vous obtenez la même erreur? En outre, renvoie-t-il une colonne nommée dateCount? – jradich1234

+0

non, mais le résultat est alors toutes les dates dans la base de données:/@ jradich1234 –

0

Peut-être:

SELECT COUNT(date) as [date] 
FROM Test 
GROUP BY date 

Date est un mot réservé, le besoin ajouter []

+1

bracketing l'alias ne corrigera pas cette requête – jradich1234

0

Vous confondez SQL avec le th ces usages de date. Je suppose que le champ d'origine est nommé date. Je suppose également que chaque champ contient le champ de date.

SELECT COUNT(*) as numDates FROM Test GROUP BY date 
+0

en boucle sur 'c.numDates' a donné lieu à la même chose que ma requête originale:/ –