2016-02-02 8 views
1

У меня есть запросаСоздание столбца во время выполнения

select Distinct EmailAddress as MailId from tblUsers 

это показывает электронные письма, но я хочу, чтобы создать столбец с помощью запроса, который покажет общее количество сообщений электронной почты.

Пожалуйста, помогите мне

ответ

2
SELECT *, COUNT(1) OVER() 
FROM (
    SELECT DISTINCT EmailAddress 
    FROM tblUsers 
) t 

Только для R & D -

CREATE FUNCTION dbo.udf_GetCount() 
RETURNS INT 
WITH SCHEMABINDING 
AS BEGIN 
    RETURN (SELECT COUNT(DISTINCT EmailAddress) FROM tblUsers) 
END 
GO 

ALTER TABLE dbo.tblUsers 
    ADD TotalCnt AS dbo.udf_GetCount() PERSISTED 
GO 

или

SELECT DISTINCT EmailAddress, t.TotalCnt 
FROM tblUsers 
CROSS JOIN (
    SELECT TotalCnt = COUNT(DISTINCT EmailAddress) 
    FROM tblUsers 
) t 
+0

возможно указать имя столбца в столбец, показывающий общее количество, – Arka

+0

возможно, но зачем вам это нужно? Функции Windows более удобны;) – Devart

+0

Просто делайте некоторые R & D. Увеличивая знания – Arka

1

Запрос

CREATE TABLE #email 
(
    email VARCHAR(MAX) 
); 

INSERT INTO #email VALUES 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'), 
('[email protected]'); 

Если вы хотите рассчитывать на каждое письмо, то

SELECT email, COUNT(email) AS [Count] 
FROM #email 
GROUP BY email; 

Результат

+-------+-------+ 
| email | Count | 
+-------+-------+ 
| [email protected] | 2  | 
| [email protected] | 2  | 
| [email protected] | 2  | 
| [email protected] | 1  | 
+-------+-------+ 

еще кол общей отчетливым электронной почты

SELECT DISTINCT email, (SELECT COUNT(DISTINCT email) FROM #email) AS [Count] 
FROM #email; 

Результат

+-------+-------+ 
| email | Count | 
+-------+-------+ 
| [email protected] | 4  | 
| [email protected] | 4  | 
| [email protected] | 4  | 
| [email protected] | 4  | 
+-------+-------+ 

SQL Fiddle demo

+0

Второй не работает, FIrst один хорошо @Ullas – Arka

+0

@Arka: Его отлично работает для меня. Повторите попытку. – Wanderer

+0

'SELECT DISTINCT email, (SELECT COUNT (DISTINCT email) FROM #email) AS [Count] FROM #email' Ошибка отображения слова «email» – Arka

Смежные вопросы