В БД хранятся ссылки в виде varchars.С этими ссылками я хочу использовать GROUP BY.
http://example.com http://example.com http://example.com
SQL для этих данных:
SELECT COUNT(*) c, Url FROM Advertisements GROUP BY Url
Я хочу этот вывод:
c Url 3 http://example.com
Но вместополучите это три раза:
c Url 1 http://example.com
Почему SELECT не группирует поля varchar?Они одинаковы, но GROUP BY не обнаруживает это.Есть идеи?
Если строка, содержащая эти URL-адреса, является данными, которые хранятся, они не являются одинаковыми URL-адресами, каждая из них отличается от предыдущей, и каждая из них будет отличаться.
Окончания разные
7 i18704
5 i18704
4 I18704
После вашего комментария я обновился, и они ГРУППА, как и ожидалось.Что вы получите, когда попробуете это?
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
Точно так же, как сказали HLGEM и Мартин, весь текст в поле должен быть одинаковым, чтобы работал GROUP BY, вы можете использовать что-то вроде GROUP BY SUBSTRING (Url, 0, 30), так вы получите :
URL | COUNT
http://example.com | 3