Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Правильно ли будет сделать такой запрос


Автор: Lunatikus 13.9.2007, 10:35
Код

SELECT data,vamp FROM t ORDER by vamp,data

я хочу не делать каждым шагом в цикле next по данному запросу,а выделять с помощью другого запроса следующую строку с каждым шагом.Т.е. мне нужно римерно такое:

Код

SELECT data,vamp FROM t WHERE data>:data AND vamp=:vamp ORDER by vamp,data

параметры с каждым шагом цикла перебора по одному значению vamp обновляются(т.е. ставятся со значениями "текущей" строки).Правильно ли задавать такое улсовие с полями datetime и varchar?А если я укажу vamp>:vamp?Допустим у меня шли такие значения:
data                vamp
01.01.2007      a
02.01.2007      a
03.01.2007      a
01.01.2007      b
02.01.2007      b
03.01.2007      b
в каждом шаге мне надо получать следующую строку  для экзекуции.Сначала я считываю первую строку,запоминаю data,vamp.Запускаю дополнительный запрос на выборку этих же данных но начиная со СЛЕДУЮЩЕЙ  после текущей строки.Не возникнет ли такой ситуации,что условие vamp>:vamp  не пройдет для b относительно a?Это тут всего один символ,А если vamp='СВ456-В3'.
И как выбрать не все,что после текущей строки а только следующую строку?ну с датой понятно,при шаге в один день data=:data+1 а с vamp?

Автор: shilnik 17.9.2007, 06:25
Попробуй что-то типа этого:
Код

SELECT TOP 1 data, vamp FROM t WHERE vamp + convert(date, data, 102) > :vamp + convert(date, :data, 102)

Автор: Lunatikus 17.9.2007, 09:57
блин...точно,про top то я и забыл...спасибо =)

Автор: SergeBS 17.9.2007, 11:32
Lunatikus, 
Читай в BOL тему DECLARE CURSOR. Не в пример проще будет.

Автор: Lunatikus 17.9.2007, 16:48
BOL...мммм...трудно вспомнить то,чего не знаешь. Это информационная система?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)