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

Откуда:
Сообщений: 107
День добрый. Не могу одуплить как решить такую задачу:
Есть таблица с клиентами и некой датой
Есть таблица с активностями клиента
Каким образом не высчитывая по одному клиенту подсчитать сколько у него было активностей за последние 30 дней до даты последней активности из первой таблицы. По одному клиенту высчитывать очень долго получается.
declare @c table (id int, lastdate date)
insert into @c 
select 1, '20181001'
union all
select 3, '20180905'


declare @a table ( id int, activity date, idclient int)
insert into @a 
select 34, '20180605',3
union all
select 53, '20180405',3
17 окт 18, 17:38    [21706941]     Ответить | Цитировать Сообщить модератору
 Re: Выборка без переменных  [new]
iiyama
Member

Откуда:
Сообщений: 642
syavik,

declare @c table (id int, lastdate date)
insert into @c 
select 1, '20181001'
union all
select 3, '20180905'


declare @a table ( id int, activity date, idclient int)
insert into @a 
select 34, '20180605',3
union all
select 53, '20180405',3
union all
select 777, '20180825',3


select C.id, C.lastdate, ClientActivity.Qty 
from @c C
	cross apply
	(
	 select count(*) from @a a where a.idclient=c.id AND a.activity>=DATEADD(dd,-30, c.lastdate)
	)ClientActivity(Qty)
17 окт 18, 19:01    [21707080]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить