Вопрос № 63357: Здравствуйте использую MS SQL Server 2000. Насколько я знаю он не поддерживает функции First(), Last(), Pervois(),Next().
Подскажите как реализовать запрос из приложения....
Вопрос № 63.357
Здравствуйте использую MS SQL Server 2000. Насколько я знаю он не поддерживает функции First(), Last(), Pervois(),Next().
Подскажите как реализовать запрос из приложения.
Приложение:
Отправлен: 20.11.2006, 10:50
Вопрос задал: Mongol_ST (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Grigory
Здравствуйте, Mongol_ST!
Попробуйте вот так:
SELECT max(Pok.DATAPOKUP) AS LAST_DATAPOKUP,
'prevDATAPOKUP'=
(select max(Pok.DATAPOKUP)
from Pok
where Pok.DATAPOKUP < (select max(Pok.DATAPOKUP)
FROM Pok WHERE POK.IDMAg=1)
AND POK.IDMAg=1)
FROM Pok
WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP
Удачи!
Ответ отправил: Grigory (статус: 5-ый класс)
Ответ отправлен: 20.11.2006, 17:24
Отвечает: Игорь Елизаров
Здравствуйте, Mongol_ST!
операции first и last легко реализуются простой сортировкой, например
сортировка по дате покупки по убыванию
SELECT top 1 (Pok.DATAPOKUP) from pok WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP desc -- выдает последнюю покупку
сортировка по возрастанию выдаст первую покупку
SELECT top 1 (Pok.DATAPOKUP) from pok WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP desc -- выдает последнюю покупку
чтобы получить следующую, можно использовать несколько приемов.
стандартный прием
- запоминаем в переменной идентификатор текущей записи
- в запросе указываем значение, большее идентификатора
другой вариант - вначале отбираем нужное количество записей и из них отбираем одну. примерно так
select top 1 datapokup
from (select top 5 datapokup from pok WHERE POK.IDMAg=1
ORDER BY Pok.DATAPOKUP desc ) p1
то есть отбираем 5 записей, сотртируем по убыванию и из них выбираем первую (получается, что эта запись была пятая в списке )
для другого направления движения аналогично.
но все-таки с идентификаторами значительно лучше..
Ответ отправил: Игорь Елизаров (статус: 7-ой класс)
Ответ отправлен: 21.11.2006, 10:18