2010-07-22 9 views
2

HI Je souhaite regrouper mes résultats dans un champ dont les caractères ont été remplacés tout en conservant leur valeur d'origine.Remplacer et regrouper par SQL

C'est ce que j'ai, mais je dois retourner la valeur de l'URL d'origine sans changer les résultats.

select Count(ID) as TotalClicks, Replace(URL, '/', '') as DistinctURL 
    from email_click_throughs 
where emailid = @ID 
group by Replace(URL, '/', '') 
order by TotalClicks desc 
+1

Mais probablement il peut y avoir plus d'une URL brute qui mappe à un distinctURL alors comment voulez-vous que cela soit géré? par exemple. URL = "/default.html" et URL = "default.html". Aussi ce RDBMS utilisez-vous? –

Répondre

3

Cela vous donne ce que vous avez décrit, mais il fait le regroupement sur « Remplacer (URL ... » redondant, donc je peut être malentendu:

select Count(ID) as TotalClicks, URL as DistinctURL 
from email_click_throughs 
where emailid = @ID 
group by Replace(URL, '/', ''), URL 
order by TotalClicks desc 

Si vous voulez juste retour d'une URL, même lorsque deux sont équivalents après le retrait «/», vous pouvez faire quelque chose comme

select Count(ID) as TotalClicks, Max(URL) as DistinctURL 
from email_click_throughs 
where emailid = @ID group by Replace(URL, '/', '') 
order by TotalClicks desc 

Mais vous n'avez pas beaucoup de contrôle sur lequel de vos « matchs » est tombé se.

+0

A cloué dans la deuxième déclaration, merci – Jamie

Questions connexes