Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом по дате актуальности / 9 сообщений из 9, страница 1 из 1
13.11.2002, 13:32:29
    #32067423
Krom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
Есть таблица цен на товары (Id) с датой начала ее действия
Id Price Date
---------------------
1 1.0 01.03.2002
2 2.0 05.03.2002
1 1.5 15.03.2002
1 2.0 01.04.2002
...

Есть таблица продаж товара с датой продажи
Date Id
---------------
03.03.2002 1
10.03.2002 2
17.03.2002 1
25.03.2002 1
05.04.2002 1

Надо к каждой продаже привязать актуальную на тот день цену. Т.е.
Date Id Price
----------------------
03.03.2002 1 1.0
10.03.2002 2 2.0
17.03.2002 1 1.5
25.03.2002 1 1.5
05.04.2002 1 2.0
...
Рейтинг: 0 / 0
13.11.2002, 13:43:02
    #32067433
vap
vap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
можно сделать примерно так.

Код: plaintext
1.
2.
SELECT a.Date, a.Id,
Price = (SELECT TOP  1  Price FROM [таблица цен на товары] WHERE Date<=a.Date ORDER BY Date DESC)
FROM [таблица продаж товара] a
...
Рейтинг: 0 / 0
13.11.2002, 13:46:17
    #32067439
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT a.SELL_DATE, a.QUANT, b.FIN_PRICE
FROM GOODS_SELL a,
(
SELECT FIRST(c.PRICE) as FIN_PRICE
FROM GOODS_PRICE c
WHERE
c.ST_DATE<=a.SELL_DATE
AND
c.ID=a.ID
ORDER BY c.ST_DATE DESC
) as b


Как-то так наверное!
...
Рейтинг: 0 / 0
13.11.2002, 14:21:18
    #32067477
winglex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
У меня создается впечатление что было бы разумно дополнить таблицу цен датой окончания действия цены,
в таком случае, конечно сложнее становится цены вбивать (нужно обеспечить неперекрытие периода действия цен), зато скорость выполнения запросов в ситуациях подобных этой ощутимо увеличится, да и запрос станет проще
Код: plaintext
1.
select Sell.Date, tPrice.Price from Sell inner join Price
on Sell.Date between Price.Start and isnull(Price.Finish,Sell.Date)
...
Рейтинг: 0 / 0
13.11.2002, 14:24:21
    #32067481
winglex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
Прошу прощения, конечно еще
.... and Price.ID = Sell.ID
...
Рейтинг: 0 / 0
13.11.2002, 14:39:52
    #32067506
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
Это понятно! Но если продумать перекрестные периоды дат, то всеравно получается один из предложенных скриптов единственно добавление
{price_end_date}<={sell_date}
...
Рейтинг: 0 / 0
13.11.2002, 14:40:37
    #32067507
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
Ошибся естественно >=

Как-же редактирования сообщения не хватает!
...
Рейтинг: 0 / 0
13.11.2002, 15:17:11
    #32067544
MichaelGK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
To winglex.
Дату окончания периода действия цен легко можно устанавливать триггером, т.ч. никаких новых сложностей.
...
Рейтинг: 0 / 0
13.11.2002, 15:39:29
    #32067556
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом по дате актуальности
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT * 
FROM [таблица продаж товара] a join 
        (SELECT p.* ,p1.date- 1  as date1
         FROM (select * from Price order by id,date) p join 
                 (select * from Price order by id,date) p1
                  on p.id=p1.id and p.date<p1.date
         ) pr ON a.id=pr.id and a.date between pr.date and pr.date1
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом по дате актуальности / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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