Форум: "Прочее";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизОбещал разместить здесь предсобеседовательную задачку Найти похожие ветки
← →
stone © (2006-03-29 11:29) [80]
> Paul_K © (29.03.06 11:09) [79]
>
> а решение то верное?
былоINSERT INTO #tRate
(SecurityTicker, TradeSystem, RateDate, Course)
SELECT
"EESR", "MMVB", "2005-12-30", 1
в #report
30/12/05 EESR RTS NULL
дальше не смотрел
← →
Paul_K © (2006-03-29 11:53) [81]мдя.. слона я не заметил...
надо так ограничение по датам написать былоand tx.RateDate < dateadd(dd,1,@rep_date)
Но присмотрелся к условию
нашел ещё багов:)
у меня оказывается ещё и только ММВБ котировки вылезут к какому-то моменту гы:)
Кстати отсюда вопрос по условию
на дату 2006-01-08 имеем
4 LKOH MMVB 2006-01-04 00:00:00 4.0
9 LKOH RTS 2006-01-07 00:00:00 9.0
что должно быть в ответе? ммвб? ртс?
← →
stone © (2006-03-29 13:19) [82]
> что должно быть в ответе? ммвб? ртс?
> Если котировка на дату Т отсутствует, берется котировка
> с максимальной датой, не превышающей Т.
Значит 8-го будет РТС, а уже 9-го "LKOH", "MMVB", "2006-01-09", 10
Думаю так, но лучше уточнить у Nikolay M. ©
← →
Paul_K © (2006-03-29 14:52) [83]хмм.. не совсем так вроде
я уже понял
7-го, 8-го и далее - РТС пока ММВБ не появится.. от так..
← →
Paul_K © (2006-03-29 15:18) [84]от так вроде верно....
begin tran
declare @start_date DATETIME,
@end_date DATETIME,
@rep_date DATETIME,
@rate_place varchar(255),
@stock_name varchar(255),
@rate_value Float
set @start_date =convert(datetime,isnull(convert(varchar,@StartDate,3),"0/0/1900"),3)
set @end_date = convert(datetime,isnull(convert(varchar,dateadd(dd,1,@FinishDate),3),"0/0/1900"),3)
set @rep_date=@start_date
while @rep_date<@end_date
begin
insert into #report (date_r,stock_name,rate_place,rate_value)
select distinct @rep_date,SecurityTicker,null,null
from #tRate
set @rep_date = dateadd(dd,1,@rep_date)
end
declare bla cursor for select date_r,stock_name from #report
open bla
fetch bla into @rep_date,@stock_name
while @@fetch_status=0
begin
select @rate_place=null, @rate_value=null
if exists (select 1 from #tRate where RateDate=@rep_date and SecurityTicker=@stock_name having count(*)>1)
select @rate_place=TradeSystem, @rate_value=Course
from #tRate
where RateDate = @rep_date
and SecurityTicker=@stock_name
and TradeSystem="MMVB"
else
select top 1 @rate_place=TradeSystem, @rate_value=Course
from #tRate
where SecurityTicker=@stock_name
and RateDate <= @rep_date
and RateDate >= @start_date
order by RateDate desc
--select @rep_date,@rate_place,@rate_value,@stock_name
update #report
set rate_place=@rate_place,
rate_value=@rate_value
where date_r=@rep_date
and stock_name=@stock_name
fetch bla into @rep_date,@stock_name
end
close bla
deallocate bla
commit tran
select convert(varchar,date_r,3),stock_name,rate_place,rate_value from #report
order by stock_name,date_r
drop table #report
select * from #tRate order by RateDate
drop table #tRate
rep_date stock_name rate_place rate_value
------------------------------ ---------- ---------- -----------------------------------------------------
29/12/05 EESR NULL NULL
30/12/05 EESR MMVB 1.0
31/12/05 EESR MMVB 1.0
01/01/06 EESR MMVB 1.0
02/01/06 EESR RTS 5.0
03/01/06 EESR MMVB 2.0
04/01/06 EESR MMVB 2.0
05/01/06 EESR MMVB 2.0
06/01/06 EESR MMVB 2.0
07/01/06 EESR MMVB 2.0
08/01/06 EESR MMVB 2.0
09/01/06 EESR MMVB 2.0
10/01/06 EESR MMVB 2.0
29/12/05 LKOH NULL NULL
30/12/05 LKOH NULL NULL
31/12/05 LKOH NULL NULL
01/01/06 LKOH RTS 8.0
02/01/06 LKOH MMVB 3.0
03/01/06 LKOH MMVB 3.0
04/01/06 LKOH MMVB 4.0
05/01/06 LKOH MMVB 4.0
06/01/06 LKOH MMVB 4.0
07/01/06 LKOH RTS 9.0
08/01/06 LKOH RTS 9.0
09/01/06 LKOH MMVB 10.0
10/01/06 LKOH MMVB 10.0
← →
Nikolay M. © (2006-03-29 15:21) [85]Виноват, прошу прощения, по работе отвлекали :)
Отвечаю.
> Кстати отсюда вопрос по условию
> на дату 2006-01-08 имеем
> 4 LKOH MMVB 2006-01-04 00:00:00 4.0
> 9 LKOH RTS 2006-01-07 00:00:00 9.0
> что должно быть в ответе? ммвб? ртс?
На 2006-01-08 будет РТС-ная котировка, значение 9.
← →
Paul_K © (2006-03-29 15:24) [86]да у меня уже прошел приступ тупизма:)
проверь кстати тормознутое мое последнее решение. Опять я налажал ?
← →
Nikolay M. © (2006-03-29 15:27) [87]
> Paul_K © (29.03.06 15:18) [84]
Да, такой вариант совпадает с stone © (28.03.06 16:55) [36], а у него, если я ничего не упустил, все правильно.
А ты всегда так курсоры обзываешь? :)
← →
Paul_K © (2006-03-29 15:34) [88]нет только когда они меня достают?)
а вот вопрос следующий. Быстродействие я не того не анализировал. встает вопрос какой вариантов быстрее и почему?
есть подозрение что мой медленнее. из-за курсора ..
← →
Nikolay M. © (2006-03-29 15:48) [89]
> Быстродействие я не того не анализировал. встает вопрос
> какой вариантов быстрее и почему?
Я сейчас загружен по самые ушки, надеюсь, в вых напишу свой вариант, набросаю скрипт для заполнения таблицы котировок и сравню твой вариант, stone и свой (если он будет). Результаты и скрипт для прогона теста выложу.
Твой курсор, да еще в транзакции, скорее всего будет не самым быстрым - под транзакцию тоже ресурсы требуются.
← →
Paul_K © (2006-03-29 15:56) [90]Твой курсор, да еще в транзакции,
хе а ты вне транзакции курсор запустить попробуй в кверианалайзере.. Я не осилил
если это процедурой оформлять то естессено надо транзакцию убирать
Страницы: 1 2 3 вся ветка
Форум: "Прочее";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.016 c