Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Количество различных клиентов  [new]
Len4ick
Member

Откуда:
Сообщений: 168
Есть задача, вот никак не могу решить

Есть таблица, в которой хранятся данные о клиентах: Cod_key - идентификатор клиента, NAME - имя клиента, Summa - сумма зачисления, State - состояние зачисления(всего два).
Необходимо вывести общую сумму зачисления для каждого состояния и количество различных клиентов, которые произвели оплату, т.е. если у Васи Иванова было 4 пеерчисления, то его считать только один раз
С суммой все понятно, а вот с количеством вопрос
DECLARE  @First TABLE
(
Cod_key int,
NAME	varchar(63) NOT NULL,
Summa   int,
State   int
) 
INSERT
INTO @First (	Cod_key,	NAME,		Summa,		State)
VALUES		(111,	'Petea',		100,		1	),
		(111,	'Petea',		200,		1	),
		(111,	'Petea',		200,		2	),
		(111,	'Petea',		300,		2	),
		(222,	'Marisa',		500,		1	),
		(222,	'Marisa',		900,		1	),
		(222,	'Vasea',		700,		2	);
		
SELECT   SUM(CASE WHEN State = 1 
		THEN Summa
	  END)			AS Summa_state1
	,SUM(CASE WHEN State = 2 
		THEN Summa
	  END)			AS Summa_state2
FROM @First
16 май 13, 15:51    [14306325]     Ответить | Цитировать Сообщить модератору
 Re: Количество различных клиентов  [new]
Glory
Member

Откуда:
Сообщений: 104751
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
16 май 13, 15:52    [14306337]     Ответить | Цитировать Сообщить модератору
 Re: Количество различных клиентов  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Len4ick
количество различных клиентов

COUNT(DISTINCT NAME)
16 май 13, 15:53    [14306357]     Ответить | Цитировать Сообщить модератору
 Re: Количество различных клиентов  [new]
Len4ick
Member

Откуда:
Сообщений: 168
Гость333,
а где вы учитываете разные статусы?
16 май 13, 15:58    [14306387]     Ответить | Цитировать Сообщить модератору
 Re: Количество различных клиентов  [new]
Glory
Member

Откуда:
Сообщений: 104751
Len4ick
а где вы учитываете разные статусы?

Так это вы должны учитывать
16 май 13, 15:59    [14306394]     Ответить | Цитировать Сообщить модератору
 Re: Количество различных клиентов  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Len4ick
Гость333,
а где вы учитываете разные статусы?

COUNT(DISTINCT CASE WHEN State = 1 THEN NAME ELSE NULL END) AS Count_State1,
COUNT(DISTINCT CASE WHEN State = 2 THEN NAME ELSE NULL END) AS Count_State2

Более внимательно посмотрел, что означают столбцы — наверное, нужно подсчитывать не количество NAME, а количество Cod_key. Хотя я не понял, почему коду 222 соответствуют два разных имени — Marisa и Vasea.
16 май 13, 16:26    [14306662]     Ответить | Цитировать Сообщить модератору
 Re: Количество различных клиентов  [new]
Len4ick
Member

Откуда:
Сообщений: 168
Гость3
спасибо
16 май 13, 16:27    [14306675]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить