2015-04-27 2 views
0

Я пытаюсь выяснить, как добавить счет в поле электронной почты в запросе на конце, но проблема, которую я имею, - это некоторые из необходимых данных, это то, что ID, DateTime, но адрес электронной почты не то, что я хочу подсчет. Я просто не могу понять, как это сделать в одной строке SQL.SQL-запрос для подсчета не уникального поля

например. Возвращение: -

101, bla, prd, [email protected], alfred, comp, test, 2015-10-10 10:10:10, 2 <-- count 
100, bla, prd, [email protected], alfred, comp, test, 2015-09-10 10:11:10, 2 
099, bla, prd, [email protected], simpson, comp, test, 2014-10-10 10:10:10, 1 
098, bla, prd, [email protected], henry, comp, test, 2014-05-10 10:10:10, 1 

Запрос

+0

Вы должны использовать [оконную функцию] (https://msdn.microsoft.com/en-us/library/ms189461.aspx) - 'COUNT (*) OVER (PARTITION BY Email)' – GarethD

+0

в какой версии SQL Server вы используете – ughai

+0

Получить неверный синтаксис рядом с ключевым словом «OVER». – user3725395

ответ

0

Если вы используете SQL Server 2005 или более поздней версии, вы можете использовать window function

SELECT TOP 200 
     ID, 
     FromPage, 
     Product, 
     Email, 
     Name, 
     Company, 
     Industry, 
     DateTime, 
     EmailTotal = COUNT(*) OVER(PARTITION BY Email) 
FROM InstallEmails 
WHERE product like 'prd%' 
ORDER BY ID DESC; 

Для более ранних версий, вам нужно будет использовать Подзапрос:

SELECT TOP 200 
     ID, 
     FromPage, 
     Product, 
     Email, 
     Name, 
     Company, 
     Industry, 
     DateTime, 
     EmailTotal = ( SELECT COUNT(*) 
         FROM ( SELECT TOP 200 Email 
            FROM InstallEmails 
            WHERE product like 'prd%' 
            ORDER BY id DESC 
           ) AS ie2 
         WHERE ie2.Email = ie.Email 
        ) 
FROM InstallEmails AS ie 
WHERE product like 'prd%' 
ORDER BY ID DESC; 
0

отработал. Кажется, все в порядке.

select TOP 200 *, (select COUNT(email) from InstallEmails where email = t.email) as EmailTotal 
from InstallEmails as t 
where product like 'prd%' 
ORDER BY ID DESC 
Смежные вопросы