Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работа с периодическими значениями / 15 сообщений из 15, страница 1 из 1
16.10.2002, 10:51:30
    #32058658
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Подскажите,пожалуйста,как сделать "правильно".
Есть две таблицы:
Цены
Дата|Цена|КодТовара
,где Дата-дата изменения цены.

Товар
КодТовара|Дата|ПриходШтук|...|...
,отмечающая движение товара.

Надо создать запрос,чтобы получилась таблица
КодТовара|Дата|ПриходШтук|Цена|

Как сделать эффективный перебор Цена на предмет поиска Цены.КодТовара =Товар.КодТовара and Товар.Дата=последнему изменению Цены.Цена?
...
Рейтинг: 0 / 0
16.10.2002, 11:01:04
    #32058664
nandji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
цену в движения запихнуть :)
вместе с суммами :)
проще потом пощитать будет
...
Рейтинг: 0 / 0
16.10.2002, 11:06:49
    #32058669
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Да проще всего-то пересчитать На все даты таблицу Цены,но ...
...
Рейтинг: 0 / 0
16.10.2002, 11:16:14
    #32058675
nandji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
для меня понятие периодичной цены связано с учетом по партиям ... вводить периодичность привязываясь только к дает помоему как-то убого. а что будет если :

за день цена сменится несколько раз ?

в один день придут разные поставки одного и того же товара по разной цене?
...
Рейтинг: 0 / 0
16.10.2002, 11:21:42
    #32058678
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Такой вариант однозначно-одинаковая цена.
Как таковой партионный учет не влияет,необходимо смотреть только по дате
...
Рейтинг: 0 / 0
16.10.2002, 11:26:59
    #32058681
nandji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
ну тогда я бы наверное функцию(товар, дата) написал хотя наверное это не самый быстрый вариант
...
Рейтинг: 0 / 0
16.10.2002, 11:29:45
    #32058683
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Варианты то как сделать у меня есть,хотя бы,как упоминал изменение таблицы Цены,но все это как то убого,неправильно.
...
Рейтинг: 0 / 0
16.10.2002, 11:31:37
    #32058685
nandji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
тоесть подожди ...
перечитал условия :))
я так понял что запрос должен выдавать по какой цене пришел товар .. так ?
тогда там обычный джойн
...
Рейтинг: 0 / 0
16.10.2002, 11:36:32
    #32058688
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
JOIN не обычный-в нем не известна дата.
Нашел нечто подобное
http://1csql.virtualave.net/1csql/st0037.htm
...
Рейтинг: 0 / 0
16.10.2002, 12:06:46
    #32058705
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Например так:
В таблицу с ценами добавить поле с датой окончания действия цены [Дата кон.]. Значение этого поля придется поддерживать в триггерах или в процедурах, изменяющих цены.
Тогда запрос будет такой:
Select [КодТовара], [Дата], [ПриходШтук], [Цена]
From Товар, Цены
Where Товар.[КодТовара] = Цены.[КодТовара]
and Товар.[Дата] between Цены.Дата and Цены.[Дата кон.]
...
Рейтинг: 0 / 0
17.10.2002, 08:22:02
    #32059010
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Если интересно,то сработало так-

select q.КодТовара,q.Дата,ПритходШтук,Цена
from Товар as q,
[Цены] as w
where w.КодТовара = q.КодТовара
and w.Дата =
(
select max(w2.Дата) from [Цены] as w2
where w2.КодТовара = q.КодТовара
and w2.Дата<q.Дата
)

Правда скорость оставляет желать лучшего...8(
...
Рейтинг: 0 / 0
17.10.2002, 10:47:33
    #32059091
Bzzzzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Сорьки, а цена какая? Если приход - однозначно в [Товар], расход - только в [Цены].
В последнем случае случае вариантов два - уже предложен период(DateStart, DateEnd) и ежедневное формирование прайса. И тот и другой имеют очевидные плюсы и минусы, т.ч. решать по ситуации!
...
Рейтинг: 0 / 0
17.10.2002, 11:16:29
    #32059104
kosm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Цена самая,что не на есть закупочная...
...
Рейтинг: 0 / 0
17.10.2002, 11:37:51
    #32059112
Bzzzzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
[Товар], и только туда! Иначе с History потом забодаться... Если на сегодня разногласий по ценам нет, это не факт что так и будет(из горького опыта). На текущий момент для поддержания существующей ситуации(единые цены за день/период рекомендую навесить проверочку возможного случайного расхождения(на случай ошибки при вводе).
...
Рейтинг: 0 / 0
17.10.2002, 14:48:19
    #32059234
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с периодическими значениями
Можно так.
Код: plaintext
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.
31.
32.
33.
create table #Цены(
	Дата datetime,
	Цена money,
	КодТовара int
)

create table #Товар(
	КодТовара int,
	Дата datetime,
	ПриходШтук int
)

insert #Цены values('01/01/01', 100 , 1 )
insert #Цены values('01/01/02', 200 , 1 )
insert #Цены values('01/01/03', 200 , 1 )
insert #Цены values('01/01/01', 200 , 2 )
insert #Цены values('01/01/02', 200 , 2 )

insert #Товар values( 1 ,'05/01/01', 10 )
insert #Товар values( 2 ,'05/01/01', 10 )
insert #Товар values( 1 ,'05/10/01', 15 )
insert #Товар values( 2 ,'05/10/02', 20 )
insert #Товар values( 1 ,'05/10/02', 5 )

select q.КодТовара,q.Дата,ПриходШтук,
	Цена = (select top  1  w.Цена from #Цены as w
	where w.КодТовара = q.КодТовара 
		and w.Дата<q.Дата 
	order by w.Дата DESC)
from #Товар as q

drop table #Цены
drop table #Товар
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работа с периодическими значениями / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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