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

Откуда:
Сообщений: 506
вот табличная переменная:
+

declare @T table (tovar char,kol int, data datetime)
insert @T 
select 'a',10,'2001'
union
select 'b',20,'2001'
union
select 'a',15,'2001'
union
select 'c',20,'2002'
union
select 'a',25,'2002'
union
select 'a',3,'2003'
union
select 'a',10,'2004'
union
select 'c',1,'2005'

след. запрос вернет:
select tovar,data,sum(kol)Kol 
	from @T
		group by tovar,data

tovar data                    Kol
----- ----------------------- -----------
a     2001-01-01 00:00:00.000 25
b     2001-01-01 00:00:00.000 20
a     2002-01-01 00:00:00.000 25
c     2002-01-01 00:00:00.000 20
a     2003-01-01 00:00:00.000 3
a     2004-01-01 00:00:00.000 10
c     2005-01-01 00:00:00.000 1

теперь,хочу получить tovar,data,Kol+(сумма всех таких товаров где дата<даты текущей записи)
результат:
tovar data                    Kol
----- ----------------------- -----------
a     2001-01-01 00:00:00.000 25
b     2001-01-01 00:00:00.000 20
a     2002-01-01 00:00:00.000 50
c     2002-01-01 00:00:00.000 20
a     2003-01-01 00:00:00.000 53
a     2004-01-01 00:00:00.000 63
c     2005-01-01 00:00:00.000 21
1 май 12, 21:41    [12493337]     Ответить | Цитировать Сообщить модератору
 Re: рекурсия или без?  [new]
hallabud
Member

Откуда: Киев
Сообщений: 245
ZVER-10,

Вроде можно без

WITH t1 AS
(select tovar,data,sum(kol) AS Kol 
	from @T
		group by tovar,data)

SELECT tovar, data, Kol,
		(SELECT SUM(Kol) FROM t1 AS t_prim WHERE t_prim.tovar = t_main.tovar AND t_prim.data < t_main.data) AS 'Kol+'
FROM t1 AS t_main;

tovar data                    Kol         Kol+
----- ----------------------- ----------- -----------
a     2001-01-01 00:00:00.000 25          NULL
b     2001-01-01 00:00:00.000 20          NULL
a     2002-01-01 00:00:00.000 25          25
c     2002-01-01 00:00:00.000 20          NULL
a     2003-01-01 00:00:00.000 3           50
a     2004-01-01 00:00:00.000 10          53
c     2005-01-01 00:00:00.000 1           20
1 май 12, 23:12    [12493571]     Ответить | Цитировать Сообщить модератору
 Re: рекурсия или без?  [new]
iljy
Member

Откуда:
Сообщений: 8711
ZVER-10,

FAQ - накопительный итог
2 май 12, 00:07    [12493679]     Ответить | Цитировать Сообщить модератору
 Re: рекурсия или без?  [new]
ZVER-10
Member

Откуда:
Сообщений: 506
hallabud,iljy
2 май 12, 01:52    [12493792]     Ответить | Цитировать Сообщить модератору
 Re: рекурсия или без?  [new]
ZVER-10
Member

Откуда:
Сообщений: 506
hallabud,iljy
спасибо!!!
2 май 12, 01:53    [12493794]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить