powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / HELP: как обойтись без #
4 сообщений из 4, страница 1 из 1
HELP: как обойтись без #
    #39787280
SangYong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заполнение:
Код: 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
HELP: как обойтись без #
    #39787281
SangYong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл
Код: sql
1.
2.
3.
drop table #T
drop table #TT
drop table #TTT
...
Рейтинг: 0 / 0
HELP: как обойтись без #
    #39787398
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
HELP: как обойтись без #
    #39787429
SangYong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, премного благодарен....всё накатал за 20 мин, а в селектах
запутался и не смог выбраться...спсб
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / HELP: как обойтись без #
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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