2010-07-22 8 views
-2

Il existe des liens stockés dans un DB sous la forme de variables. Avec ces liens, je veux utiliser GROUP BY.Problème GROUP BY avec varchar

http://example.com 
http://example.com 
http://example.com 

SQL sur ces données:

SELECT COUNT(*) c, Url 
    FROM Advertisements 
    GROUP BY Url 

Je veux cette sortie:

c Url 
3 http://example.com 

Mais au lieu je reçois cela trois fois:

c Url 
1 http://example.com 

Pourquoi pas SELECT groupe les champs varchar? Ils sont identiques mais GROUP BY ne détecte pas cela. Des idées?

+0

Pouvez-vous coller les données ** réelles ** dans votre question? –

+2

lol .. les liens ne sont pas terriblement utiles –

+0

J'aimerais vous aider, mais rien de tout cela n'a de sens pour moi. Pls mise à jour avec ce que vos données sont dans la table, la requête que vous utilisez, et ce que vous voulez comme résultat final. –

Répondre

2

Les terminaisons sont différentes

​ i18704

​ i18704

​ i18704

Suite à votre commentaire que j'ai mis à jour et ils GROUP comme prévu . Qu'est-ce que vous obtenez quand vous essayez cela?

CREATE TABLE #Advertisements 
(
ID INT IDENTITY(1,1), 
Url VARCHAR(200) 
) 

INSERT INTO #Advertisements VALUES 
('http://example.com') 

INSERT INTO #Advertisements VALUES 
('http://example.com') 

INSERT INTO #Advertisements VALUES 
('http://example.com') 



SELECT COUNT(*) c, Url 
    FROM #Advertisements 
    GROUP BY Url 
+0

Désolé, mettre à jour à 7 7 7. – senzacionale

+0

Voir édition. Cela fonctionne maintenant pour moi. –

3

Si la chaîne contenant ces URLs est la donnée qui est stockée, ils ne sont pas la même URL, chacun étant différent de ce groupe par mettrait dans chaque groupe differnt.

1

Tout comme HLGEM et Martin dit, le texte entier dans le domaine doit être le même pour que le GROUP BY fonctionne, vous pouvez utiliser quelque chose comme GROUP BY SUBSTRING (Url, 0, 30), de cette façon vous obtiendrez:

URL | LE COMTE

http://example.com | 3