Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / HELP: как обойтись без # / 4 сообщений из 4, страница 1 из 1
17.03.2019, 11:45
    #39787280
SangYong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HELP: как обойтись без #
заполнение:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE #T
(Id INT IDENTITY,CURS float, D date)
 
INSERT INTO #T
VALUES (40.5, '2019-03-01'),
            (60.5, '2019-03-04'),
	    (70.5, '2019-03-08'),
	    (80.5, '2019-03-14'),
	    (90.5, '2019-03-16')

CREATE TABLE #TT
(Id INT IDENTITY, CURS float, DD date)

DECLARE @i INT
DECLARE @DATA date

SET @i = 1
SET @DATA = '2019-03-01'
WHILE (@i <=21)
BEGIN
    INSERT INTO #TT
    VALUES (0, cast(DATEADD(DAY,@i,'2019-03-01T00:00:00.000') as date))
    set @i = @i + 1 
END



нужно получить курс из #T на каждую дату из #TT
помогите обойтись без заполнения #TTT одним волшебным join
пока делаю так - ничего лучшего не придумал:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TABLE #TTT
(Id INT IDENTITY, CURS float, DD date)

DECLARE @Curs float, @Save float, @DD date
set @Save = 0

DECLARE C CURSOR FAST_FORWARD FOR
select curs,D from 
(
select 1 for_ord,curs,D from #T
union 
select 2 for_ord,curs,DD from #TT
) U order by D, for_ord

OPEN C
FETCH NEXT FROM C INTO @Curs, @DD
WHILE @@FETCH_STATUS = 0
BEGIN
	
	set @save =  iif(@Curs=0, @Save, @Curs)

	INSERT INTO #TTT  VALUES (@Save, @DD)

	FETCH NEXT FROM C INTO @Curs, @DD

END
CLOSE C
DEALLOCATE C

select distinct curs,DD from #TTT
...
Рейтинг: 0 / 0
17.03.2019, 11:48
    #39787281
SangYong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HELP: как обойтись без #
забыл
Код: sql
1.
2.
3.
drop table #T
drop table #TT
drop table #TTT
...
Рейтинг: 0 / 0
17.03.2019, 19:49
    #39787398
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HELP: как обойтись без #
SangYongнужно получить курс из #T на каждую дату из #TT
помогите обойтись без заполнения #TTT одним волшебным joinНу вообще простейший запрос, давным давно так писали:
Код: sql
1.
2.
3.
select tt.DD, (select top 1 t.CURS from #T t where t.D <= tt.DD order by t.D desc) as curs
from #TT as tt
order by tt.DD


Если из #T нужны ещё какие то поля, то нужно переписать на современный манер, используя OVER или CROSS APPLY
...
Рейтинг: 0 / 0
17.03.2019, 20:59
    #39787429
SangYong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HELP: как обойтись без #
alexeyvg, премного благодарен....всё накатал за 20 мин, а в селектах
запутался и не смог выбраться...спсб
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / HELP: как обойтись без # / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]