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

Откуда:
Сообщений: 17
Доброе время суток!

столкнулся с проблемой построения запроса, гуглил,но ничего не нашел подходящего

у меня sql 2008 r2
есть таблица
CREATE TABLE [dbo].[exch_Trades](
	[IdExchange] [smallint] NOT NULL,
	[IdTradeOperation] [smallint] NOT NULL,
	[IdPair] [smallint] NOT NULL,
	[price] [decimal](18, 8) NOT NULL,
	[amount] [decimal](18, 8) NOT NULL,
	[tid] [bigint] NOT NULL,
	[timest] [datetime2](7) NOT NULL
) ON [PRIMARY]

она содержит данные
+

1	2	1	234.90200000	0.00500000	55222245	2015-05-30 23:07:46.0000000
1	2	1	234.90200000	0.01100000	55222229	2015-05-30 23:06:59.0000000
1	2	1	234.90300000	0.01000000	55222227	2015-05-30 23:06:43.0000000
1	1	1	234.90300000	0.01000000	55222226	2015-05-30 23:06:41.0000000
1	1	1	234.90300000	0.01000000	55222225	2015-05-30 23:06:41.0000000
1	1	1	234.90300000	0.01000000	55222224	2015-05-30 23:06:41.0000000
1	1	1	234.90300000	0.01600000	55222223	2015-05-30 23:06:41.0000000
1	1	1	234.90000000	2.73853000	55222219	2015-05-30 23:04:58.0000000
1	1	1	234.90600000	0.01100000	55222218	2015-05-30 23:04:58.0000000
1	1	1	234.91000000	0.01000000	55222217	2015-05-30 23:04:58.0000000
1	1	1	234.91000000	0.00100000	55222216	2015-05-30 23:04:58.0000000
1	1	1	234.91000000	0.00900000	55222215	2015-05-30 23:04:52.0000000
1	1	1	234.91000000	0.01000000	55222214	2015-05-30 23:04:51.0000000
1	1	1	234.91000000	0.01100000	55222213	2015-05-30 23:04:51.0000000
1	1	1	234.90000000	0.42000000	55222200	2015-05-30 23:03:07.0000000
1	1	1	234.90000000	0.20800000	55222199	2015-05-30 23:03:04.0000000
1	1	1	234.90000000	34.81000000	55222197	2015-05-30 23:03:03.0000000
1	1	1	234.90000000	3.23900000	55222196	2015-05-30 23:02:55.0000000
1	1	1	234.90000000	2.74000000	55222193	2015-05-30 23:02:54.0000000
1	1	1	234.90000000	2.21600000	55222192	2015-05-30 23:02:53.0000000
1	1	1	234.90000000	2.43500000	55222191	2015-05-30 23:02:52.0000000
1	1	1	234.90000000	2.55300000	55222190	2015-05-30 23:02:51.0000000
1	1	1	234.90000000	2.74600000	55222189	2015-05-30 23:02:50.0000000
1	1	1	234.90000000	3.06600000	55222188	2015-05-30 23:02:50.0000000
1	1	1	234.90000000	2.64500000	55222187	2015-05-30 23:02:48.0000000
1	1	1	234.90000000	2.34100000	55222186	2015-05-30 23:02:42.0000000
1	2	1	234.90400000	0.10000000	55222185	2015-05-30 23:02:40.0000000
1	1	1	234.90000000	3.00000000	55222184	2015-05-30 23:02:39.0000000
1	2	1	234.88700000	0.01097800	55222182	2015-05-30 23:02:37.0000000
1	2	1	234.87000000	0.01600000	55222181	2015-05-30 23:02:37.0000000
1	2	1	234.86800000	1.40000000	55222180	2015-05-30 23:02:37.0000000
1	2	1	234.86500000	0.04130000	55222179	2015-05-30 23:02:37.0000000
1	2	1	234.66400000	0.01100000	55222175	2015-05-30 23:01:42.0000000
1	2	1	234.58400000	0.01100000	55222173	2015-05-30 23:01:42.0000000
1	2	1	234.26100000	0.10000000	55222162	2015-05-30 23:00:21.0000000
1	1	1	234.26100000	0.01000000	55222161	2015-05-30 23:00:20.0000000
1	1	1	234.26100000	0.01000000	55222160	2015-05-30 23:00:20.0000000
1	1	1	234.26100000	0.01000000	55222159	2015-05-30 23:00:20.0000000
1	1	1	234.26100000	0.01000000	55222158	2015-05-30 23:00:20.0000000
1	1	1	234.26100000	0.00446143	55222128	2015-05-30 22:59:47.0000000
1	1	1	234.26100000	0.01100000	55222127	2015-05-30 22:59:47.0000000
1	2	1	234.86700000	0.48012900	55222119	2015-05-30 22:59:47.0000000
1	2	1	234.86700000	1.39461000	55222117	2015-05-30 22:59:46.0000000
1	2	1	234.86700000	0.24245400	55222114	2015-05-30 22:59:46.0000000
1	2	1	234.86700000	0.04750000	55222112	2015-05-30 22:59:46.0000000
1	2	1	234.75100000	0.03077000	55222110	2015-05-30 22:59:46.0000000
1	2	1	234.75000000	0.03500000	55222107	2015-05-30 22:59:46.0000000
1	2	1	234.38200000	0.01100000	55222105	2015-05-30 22:59:46.0000000
1	2	1	234.34200000	0.01300000	55222100	2015-05-30 22:59:46.0000000
1	1	1	234.20000000	0.01418540	55222065	2015-05-30 22:58:56.0000000
1	2	1	234.19200000	0.01100000	55222061	2015-05-30 22:58:53.0000000
1	2	1	234.71700000	0.26546800	55222041	2015-05-30 22:56:19.0000000
1	2	1	234.00000000	0.89653200	55222040	2015-05-30 22:56:19.0000000
1	2	1	234.00000000	0.02356220	55222030	2015-05-30 22:55:36.0000000
1	2	1	234.00000000	0.01100000	55222029	2015-05-30 22:55:35.0000000
1	1	1	234.00000000	0.06890540	55222028	2015-05-30 22:55:30.0000000
1	2	1	234.71700000	1.82289000	55222027	2015-05-30 22:55:30.0000000
1	2	1	234.71600000	0.04750000	55222026	2015-05-30 22:55:30.0000000
1	2	1	234.68000000	0.12766600	55222025	2015-05-30 22:55:30.0000000
1	2	1	234.58000000	0.45300000	55222024	2015-05-30 22:55:30.0000000
1	2	1	234.58000000	0.45300000	55222023	2015-05-30 22:55:30.0000000
1	2	1	234.56400000	0.03080000	55222022	2015-05-30 22:55:30.0000000
1	2	1	234.54800000	0.01040000	55222021	2015-05-30 22:55:30.0000000
1	2	1	234.54400000	2.99115000	55222020	2015-05-30 22:55:30.0000000
1	2	1	234.47500000	0.04159780	55222019	2015-05-30 22:55:30.0000000
1	2	1	234.37700000	0.01100000	55222018	2015-05-30 22:55:30.0000000
1	2	1	234.31100000	0.01100000	55222017	2015-05-30 22:55:30.0000000
1	1	1	234.00000000	3.00000000	55222016	2015-05-30 22:55:29.0000000
1	1	1	234.00000000	0.60850000	55222010	2015-05-30 22:55:01.0000000
1	1	1	234.18000000	0.01000000	55222009	2015-05-30 22:55:01.0000000
1	1	1	234.18000000	0.38150000	55222008	2015-05-30 22:55:01.0000000
1	1	1	234.18000000	0.01546300	55222003	2015-05-30 22:54:05.0000000
1	1	1	234.18000000	0.00444565	55221999	2015-05-30 22:52:57.0000000
1	1	1	234.24600000	0.01100000	55221998	2015-05-30 22:52:57.0000000
1	1	1	234.18000000	0.02850000	55221992	2015-05-30 22:52:35.0000000
1	2	1	234.47500000	0.12820100	55221988	2015-05-30 22:52:19.0000000
1	2	1	234.47500000	0.01000000	55221987	2015-05-30 22:52:02.0000000
1	1	1	234.18000000	0.01001000	55221983	2015-05-30 22:51:29.0000000
1	1	1	234.18000000	0.02316850	55221979	2015-05-30 22:50:51.0000000
1	2	1	234.47500000	0.15700000	55221976	2015-05-30 22:50:31.0000000
1	2	1	234.47400000	0.03850000	55221975	2015-05-30 22:50:20.0000000
1	2	1	234.37700000	0.01100000	55221974	2015-05-30 22:50:20.0000000
1	1	1	234.18000000	0.01809590	55221972	2015-05-30 22:50:17.0000000
1	1	1	234.18000000	0.02316810	55221961	2015-05-30 22:50:00.0000000
1	1	1	234.18000000	0.01543480	55221958	2015-05-30 22:49:44.0000000
1	1	1	234.18000000	0.01212940	55221956	2015-05-30 22:49:31.0000000
1	1	1	234.27800000	0.01100000	55221955	2015-05-30 22:49:31.0000000
1	1	1	234.18000000	0.02314910	55221950	2015-05-30 22:49:20.0000000


есть скрипт который группирует и вытаскивает необходимые данные
declare @idExch int =1
declare @idPair int =1
declare @Step int =5

select 
 sum(case when vp.v2 = 1 then vp.price End) [first],
 sum(case when vp.v1 = 1 then vp.price End) [last],
dateadd( mi, datediff( mi,'20150101', vp.timest )/@Step*@Step, '20150101' )  [date], 
max(vp.price) max_num, 
min(vp.price)min_num,
sum(vp.amount) volume
from (select  *	, row_number() over(PARTITION BY  dateadd( mi, datediff( mi,'20150101', timest )/@Step*@Step, '20150101' )  ORDER BY timest desc ,tid desc) v1 
	    	, row_number() over(PARTITION BY dateadd( mi, datediff( mi,'20150101', timest )/@Step*@Step, '20150101' )   ORDER BY timest,tid ) v2
	    	
from dbo.exch_Trades tr
where IdExchange = @idExch and IdPair = @idPair) vp
group by dateadd( mi, datediff( mi,'20150101', vp.timest )/@Step*@Step, '20150101' )
order by dateadd( mi, datediff( mi,'20150101', vp.timest )/@Step*@Step, '20150101' ) asc

все работает правильно за исключением того что :
Step =5 - групиировать по 5 минут вытащить минимальную цену,максимальну цену,первую на смене 5 минут и последнюю
но бывают временные пропуски ,например получаю минуты 35, 40 пропущена (т.к не было торгов),45, 50,55

+
first           last	        date	                max_num     	min_num	        volume
233.91200000	234.15500000	2015-05-30 22:35:00.000	234.15500000	233.54200000	12.25929916
233.69400000	234.18000000	2015-05-30 22:45:00.000	234.47500000	233.54000000	2.81554170
234.18000000	234.18000000	2015-05-30 22:50:00.000	234.47500000	234.18000000	0.47855215
234.18000000	234.26100000	2015-05-30 22:55:00.000	234.86700000	234.00000000	13.56058123



хотелось бы чтобы данные брались в случае пропуска от предыдущей колонки last,но время проставлялось правильно,т.е
хочу такое:
+
first last date max_num min_num volume
233.91200000 234.15500000 2015-05-30 22:35:00.000 234.15500000 233.54200000 12.25929916
234.15500000 234.15500000 2015-05-30 22:40:00.000 234.15500000 234.15500000 0
233.69400000 234.18000000 2015-05-30 22:45:00.000 234.47500000 233.54000000 2.81554170
234.18000000 234.18000000 2015-05-30 22:50:00.000 234.47500000 234.18000000 0.47855215
234.18000000 234.26100000 2015-05-30 22:55:00.000 234.86700000 234.00000000 13.56058123


пропусков может быть и не 1 ,а более тогда заполняются по аналогии с одним
3 июн 15, 20:32    [17727479]     Ответить | Цитировать Сообщить модератору
 Re: заполнение пропущеных занчений в одном селекте  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
cov, ну так сделайте таблицу, в которой не будет пропуска во времени и соедините с ней.
4 июн 15, 10:05    [17728656]     Ответить | Цитировать Сообщить модератору
 Re: заполнение пропущеных занчений в одном селекте  [new]
cov
Member

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

я пытался получить range дат в диапазоне с шагом Step как в скрипте и приджоинится,но мало того что куча кастылей в инете как это сделать, во вторых сложность вызывает последний пункт призвоение значений от поля last последней записи до пропуска
4 июн 15, 10:51    [17729001]     Ответить | Цитировать Сообщить модератору
 Re: заполнение пропущеных занчений в одном селекте  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
cov, "неправильно ты, дядя Федор, тестовые данные готовишь"

Вот как надо:

+
CREATE TABLE [#exch_Trades](
	[IdExchange] [smallint] NOT NULL,
	[IdTradeOperation] [smallint] NOT NULL,
	[IdPair] [smallint] NOT NULL,
	[price] [decimal](18, 8) NOT NULL,
	[amount] [decimal](18, 8) NOT NULL,
	[tid] [bigint] NOT NULL,
	[timest] [datetime2](7) NOT NULL
) ON [PRIMARY];

insert into [#exch_Trades]
select * 
from (values ('1', '2', '1', '234.90200000', '0.00500000', '55222245', '2015-05-30 23:07:46.0000000'),
('1', '2', '1', '234.90200000', '0.01100000', '55222229', '2015-05-30 23:06:59.0000000'),
('1', '2', '1', '234.90300000', '0.01000000', '55222227', '2015-05-30 23:06:43.0000000'),
('1', '1', '1', '234.90300000', '0.01000000', '55222226', '2015-05-30 23:06:41.0000000'),
('1', '1', '1', '234.90300000', '0.01000000', '55222225', '2015-05-30 23:06:41.0000000'),
('1', '1', '1', '234.90300000', '0.01000000', '55222224', '2015-05-30 23:06:41.0000000'),
('1', '1', '1', '234.90300000', '0.01600000', '55222223', '2015-05-30 23:06:41.0000000'),
('1', '1', '1', '234.90000000', '2.73853000', '55222219', '2015-05-30 23:04:58.0000000'),
('1', '1', '1', '234.90600000', '0.01100000', '55222218', '2015-05-30 23:04:58.0000000'),
('1', '1', '1', '234.91000000', '0.01000000', '55222217', '2015-05-30 23:04:58.0000000'),
('1', '1', '1', '234.91000000', '0.00100000', '55222216', '2015-05-30 23:04:58.0000000'),
('1', '1', '1', '234.91000000', '0.00900000', '55222215', '2015-05-30 23:04:52.0000000'),
('1', '1', '1', '234.91000000', '0.01000000', '55222214', '2015-05-30 23:04:51.0000000'),
('1', '1', '1', '234.91000000', '0.01100000', '55222213', '2015-05-30 23:04:51.0000000'),
('1', '1', '1', '234.90000000', '0.42000000', '55222200', '2015-05-30 23:03:07.0000000'),
('1', '1', '1', '234.90000000', '0.20800000', '55222199', '2015-05-30 23:03:04.0000000'),
('1', '1', '1', '234.90000000', '34.81000000', '55222197', '2015-05-30 23:03:03.0000000'),
('1', '1', '1', '234.90000000', '3.23900000', '55222196', '2015-05-30 23:02:55.0000000'),
('1', '1', '1', '234.90000000', '2.74000000', '55222193', '2015-05-30 23:02:54.0000000'),
('1', '1', '1', '234.90000000', '2.21600000', '55222192', '2015-05-30 23:02:53.0000000'),
('1', '1', '1', '234.90000000', '2.43500000', '55222191', '2015-05-30 23:02:52.0000000'),
('1', '1', '1', '234.90000000', '2.55300000', '55222190', '2015-05-30 23:02:51.0000000'),
('1', '1', '1', '234.90000000', '2.74600000', '55222189', '2015-05-30 23:02:50.0000000'),
('1', '1', '1', '234.90000000', '3.06600000', '55222188', '2015-05-30 23:02:50.0000000'),
('1', '1', '1', '234.90000000', '2.64500000', '55222187', '2015-05-30 23:02:48.0000000'),
('1', '1', '1', '234.90000000', '2.34100000', '55222186', '2015-05-30 23:02:42.0000000'),
('1', '2', '1', '234.90400000', '0.10000000', '55222185', '2015-05-30 23:02:40.0000000'),
('1', '1', '1', '234.90000000', '3.00000000', '55222184', '2015-05-30 23:02:39.0000000'),
('1', '2', '1', '234.88700000', '0.01097800', '55222182', '2015-05-30 23:02:37.0000000'),
('1', '2', '1', '234.87000000', '0.01600000', '55222181', '2015-05-30 23:02:37.0000000'),
('1', '2', '1', '234.86800000', '1.40000000', '55222180', '2015-05-30 23:02:37.0000000'),
('1', '2', '1', '234.86500000', '0.04130000', '55222179', '2015-05-30 23:02:37.0000000'),
('1', '2', '1', '234.66400000', '0.01100000', '55222175', '2015-05-30 23:01:42.0000000'),
('1', '2', '1', '234.58400000', '0.01100000', '55222173', '2015-05-30 23:01:42.0000000'),
('1', '2', '1', '234.26100000', '0.10000000', '55222162', '2015-05-30 23:00:21.0000000'),
('1', '1', '1', '234.26100000', '0.01000000', '55222161', '2015-05-30 23:00:20.0000000'),
('1', '1', '1', '234.26100000', '0.01000000', '55222160', '2015-05-30 23:00:20.0000000'),
('1', '1', '1', '234.26100000', '0.01000000', '55222159', '2015-05-30 23:00:20.0000000'),
('1', '1', '1', '234.26100000', '0.01000000', '55222158', '2015-05-30 23:00:20.0000000'),
('1', '1', '1', '234.26100000', '0.00446143', '55222128', '2015-05-30 22:59:47.0000000'),
('1', '1', '1', '234.26100000', '0.01100000', '55222127', '2015-05-30 22:59:47.0000000'),
('1', '2', '1', '234.86700000', '0.48012900', '55222119', '2015-05-30 22:59:47.0000000'),
('1', '2', '1', '234.86700000', '1.39461000', '55222117', '2015-05-30 22:59:46.0000000'),
('1', '2', '1', '234.86700000', '0.24245400', '55222114', '2015-05-30 22:59:46.0000000'),
('1', '2', '1', '234.86700000', '0.04750000', '55222112', '2015-05-30 22:59:46.0000000'),
('1', '2', '1', '234.75100000', '0.03077000', '55222110', '2015-05-30 22:59:46.0000000'),
('1', '2', '1', '234.75000000', '0.03500000', '55222107', '2015-05-30 22:59:46.0000000'),
('1', '2', '1', '234.38200000', '0.01100000', '55222105', '2015-05-30 22:59:46.0000000'),
('1', '2', '1', '234.34200000', '0.01300000', '55222100', '2015-05-30 22:59:46.0000000'),
('1', '1', '1', '234.20000000', '0.01418540', '55222065', '2015-05-30 22:58:56.0000000'),
('1', '2', '1', '234.19200000', '0.01100000', '55222061', '2015-05-30 22:58:53.0000000'),
('1', '2', '1', '234.71700000', '0.26546800', '55222041', '2015-05-30 22:56:19.0000000'),
('1', '2', '1', '234.00000000', '0.89653200', '55222040', '2015-05-30 22:56:19.0000000'),
('1', '2', '1', '234.00000000', '0.02356220', '55222030', '2015-05-30 22:55:36.0000000'),
('1', '2', '1', '234.00000000', '0.01100000', '55222029', '2015-05-30 22:55:35.0000000'),
('1', '1', '1', '234.00000000', '0.06890540', '55222028', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.71700000', '1.82289000', '55222027', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.71600000', '0.04750000', '55222026', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.68000000', '0.12766600', '55222025', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.58000000', '0.45300000', '55222024', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.58000000', '0.45300000', '55222023', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.56400000', '0.03080000', '55222022', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.54800000', '0.01040000', '55222021', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.54400000', '2.99115000', '55222020', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.47500000', '0.04159780', '55222019', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.37700000', '0.01100000', '55222018', '2015-05-30 22:55:30.0000000'),
('1', '2', '1', '234.31100000', '0.01100000', '55222017', '2015-05-30 22:55:30.0000000'),
('1', '1', '1', '234.00000000', '3.00000000', '55222016', '2015-05-30 22:55:29.0000000'),
('1', '1', '1', '234.00000000', '0.60850000', '55222010', '2015-05-30 22:55:01.0000000'),
('1', '1', '1', '234.18000000', '0.01000000', '55222009', '2015-05-30 22:55:01.0000000'),
('1', '1', '1', '234.18000000', '0.38150000', '55222008', '2015-05-30 22:55:01.0000000'),
('1', '1', '1', '234.18000000', '0.01546300', '55222003', '2015-05-30 22:54:05.0000000'),
('1', '1', '1', '234.18000000', '0.00444565', '55221999', '2015-05-30 22:52:57.0000000'),
('1', '1', '1', '234.24600000', '0.01100000', '55221998', '2015-05-30 22:52:57.0000000'),
('1', '1', '1', '234.18000000', '0.02850000', '55221992', '2015-05-30 22:52:35.0000000'),
('1', '2', '1', '234.47500000', '0.12820100', '55221988', '2015-05-30 22:52:19.0000000'),
('1', '2', '1', '234.47500000', '0.01000000', '55221987', '2015-05-30 22:52:02.0000000'),
('1', '1', '1', '234.18000000', '0.01001000', '55221983', '2015-05-30 22:51:29.0000000'),
('1', '1', '1', '234.18000000', '0.02316850', '55221979', '2015-05-30 22:50:51.0000000'),
('1', '2', '1', '234.47500000', '0.15700000', '55221976', '2015-05-30 22:50:31.0000000'),
('1', '2', '1', '234.47400000', '0.03850000', '55221975', '2015-05-30 22:50:20.0000000'),
('1', '2', '1', '234.37700000', '0.01100000', '55221974', '2015-05-30 22:50:20.0000000'),
('1', '1', '1', '234.18000000', '0.01809590', '55221972', '2015-05-30 22:50:17.0000000'),
('1', '1', '1', '234.18000000', '0.02316810', '55221961', '2015-05-30 22:50:00.0000000'),
('1', '1', '1', '234.18000000', '0.01543480', '55221958', '2015-05-30 22:49:44.0000000'),
('1', '1', '1', '234.18000000', '0.01212940', '55221956', '2015-05-30 22:49:31.0000000'),
('1', '1', '1', '234.27800000', '0.01100000', '55221955', '2015-05-30 22:49:31.0000000'),
('1', '1', '1', '234.18000000', '0.02314910', '55221950', '2015-05-30 22:49:20.0000000')) as tbl ([IdExchange],[IdTradeOperation],[IdPair],[price],[amount],[tid],[timest]);


Скрипт примерно таким получится.

declare @idExch int =1;
declare @idPair int =1;
declare @Step int =5;

with small_calendar as 
(
	select	cast('2015-05-30 00:00:00' as datetime2) as datestart
	union all
	select	dateadd(mi, @Step, datestart)
	from	small_calendar
	where datestart < cast('2015-05-31 00:00:00' as datetime2)
)
select	isnull(first_price.price, last_price.price) as [First]
	,	last_price.price as [Last]
	,	sc.datestart as [Date]
	, isnull(max(et.price), last_price.price) as [Max_num]
	, isnull(min(et.price), last_price.price) as [Min_num]
	, isnull(sum(et.amount), 0)	as [Volume]
from	small_calendar sc
		outer apply (select top 1 price
					 from	[#exch_Trades] et
					 where	et.IdExchange = @idExch and et.IdPair = @idPair
						and et.timest between sc.datestart and dateadd(mi, @Step, datestart)
					order by et.timest, et.tid) as first_price
		outer apply (select top 1 price
					 from	[#exch_Trades] et
					 where	et.IdExchange = @idExch and et.IdPair = @idPair
						and et.timest < dateadd(mi, @Step, datestart)
					order by et.timest desc, et.tid desc) as last_price
		left  join [#exch_Trades] et
				on et.IdExchange = @idExch and et.IdPair = @idPair
				and et.timest between sc.datestart and dateadd(mi, @Step, datestart)
group by sc.datestart, first_price.price, last_price.price
option (maxrecursion 1000)


Надеюсь, понятно, что я для примера сделал таблицу с календарем через CTE, при регулярном использовании ее стоит материализовать - т.е. создать специальную таблицу с датами.
4 июн 15, 11:55    [17729437]     Ответить | Цитировать Сообщить модератору
 Re: заполнение пропущеных занчений в одном селекте  [new]
cov
Member

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

спасибо за пример) учту ваши замечания!) бутерброд колбасой на язык
4 июн 15, 15:24    [17730969]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить