Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с запросом  [new]
tan4k
Member

Откуда:
Сообщений: 8
Пожалуйста, помогите с запросом!

есть таблицы - компания, дата, цена
цена за товар должна быть свежая, соответственно последняя по дате, дату я беру промежуток за месяц.
Как мне выбрать именно последние цены товаров по дате?
sql2000
29 июн 09, 11:36    [7353921]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
tan4k
Как мне выбрать именно последние цены товаров по дате?
where NOT EXISTS (Transact-SQL) "более поздняя цена", например
29 июн 09, 11:43    [7353958]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Azvaal
Member

Откуда: Москва
Сообщений: 215
Паганель
tan4k
Как мне выбрать именно последние цены товаров по дате?
where NOT EXISTS (Transact-SQL) "более поздняя цена", например


Не понял я вас...

tan4k

Как мне выбрать именно последние цены товаров по дате?


select price
from table
where date = (select max(date) from table)
29 июн 09, 11:50    [7353990]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Azvaal
Не понял я вас...
Хм, что ж тут непонятного
Берем какую-либо цену и смотрим - нет ли более поздней
Если нет, значит это и есть самая поздняя

А слово "например" в моем посте явно указывает на то, что этот способ решения - не единственный
29 июн 09, 11:53    [7353999]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
tan4k
Member

Откуда:
Сообщений: 8
Паганель,

А как мне указать что это дата является последней? Если через max, то он смотрит на последнюю дату во всей выборке, а не конкретно по данной организации. Как можно это разрулить?
29 июн 09, 12:09    [7354070]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT *
FROM [таблица] T
WHERE NOT EXISTS(SELECT * FROM [таблица] TT WHERE TT.[компания]=T.[компания] AND TT.[дата]>T.[дата]);
29 июн 09, 12:14    [7354088]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
tan4k
А как мне указать что это дата является последней?
Дата является последней, если не нашлось более поздней

Не нашлось ли - определяется посредством not exists

Искать ли более позднюю дату вообще или только по опр. организации - определяется в where внутри скобок после слова exists
29 июн 09, 12:15    [7354095]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
tan4k
Member

Откуда:
Сообщений: 8
iap,

Спасибо, сейчас попробуем.
29 июн 09, 12:16    [7354103]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
tan4k
Member

Откуда:
Сообщений: 8
Паганель,
Спасибо за пояснение!
29 июн 09, 12:18    [7354115]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
BugsBunny#
Guest
select T.company, T.date, T.price
from table1 as T inner join
(
	select T.company, max(T.date) as maxdate --максимальная дата за промежуток для компании
	from table1 as T
	where T.date between '2009-01-01' and '2009-01-31'
	group by T.company
)Temp 
	on T.company = Temp.company and T.date = Temp.maxdate
29 июн 09, 14:48    [7354881]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить