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

Откуда:
Сообщений: 143
Вопрос новичка осваивающего T-SQL
есть таблица R с полями T - типа datetime и P - типа decimal, T поле уникальное, ключ.
таблица R большая, миллион записей к примеру.

Хочу заменить код ниже

DECLARE @T1 datetime, @T2 datetime
DECLARE @O decimal(18,6),@C decimal(18,6)
DECLARE @MAX decimal(18,6), @MIN decimal(18,6)
set @T1 = ...
set @T2 = ... (не важно что, только @T1 < @T2)

select top 1 @O=@P from R where T >=@T1 and T<=@T2
order by T asc
select top 1 @C=@P from R where T >=@T1 and T<=@T2
order by T desc
select @MAX=max(P), @MIN=min(P) from R where T >=@T1 and T<=@T2

на
DECLARE @V table
( T datetime,
P decimal(18,6)
)

insert into @V select T,P from R where T >=@T1 and T<=@T2

select top 1 @O=@P from @V
order by T asc
select top 1 @C=@P from @V
order by T desc
select @MAX=max(P), @MIN=min(P) from @V


Наверное код с табличной переменной будет лучше?
В коде этом есть ошибка не позволяющая отрабатывать ORDER BY по переменной T.
У меня не отрабатывает в order by. Укажите пожалуйста мою ошибку.
Спасибо.
18 май 13, 12:22    [14315835]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
forts
Member

Откуда:
Сообщений: 143
Извините за ошибку в select @O=@P и @C=@P, конечное там @O=P, @C=P
18 май 13, 12:24    [14315842]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
Glory
Member

Откуда:
Сообщений: 104751
forts
У меня не отрабатывает в order by. Укажите пожалуйста мою ошибку.

И опчему вы решили, что order by не отрабатывает ?
Потому что вы присваиваете одной переменной значение другой переменной - select @O=@P ?
18 май 13, 13:45    [14316128]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
forts
Member

Откуда:
Сообщений: 143
Glory
forts
У меня не отрабатывает в order by. Укажите пожалуйста мою ошибку.

И опчему вы решили, что order by не отрабатывает ?
Потому что вы присваиваете одной переменной значение другой переменной - ?

я написал что select @O=@P это моя опечатка в тексте когда набирал здесь. В действительности в тексте должно быть select @O=P. То что не отрабатывает я проверял на кодах программы первом и втором, значения отличаются.
18 май 13, 13:50    [14316146]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
Glory
Member

Откуда:
Сообщений: 104751
forts
То что не отрабатывает я проверял на кодах программы первом и втором, значения отличаются.

И поэтому вы решили, что не работает именно order by ?
18 май 13, 14:02    [14316168]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
forts
Member

Откуда:
Сообщений: 143
Glory
forts
То что не отрабатывает я проверял на кодах программы первом и втором, значения отличаются.

И поэтому вы решили, что не работает именно order by ?

Я уже написал что мои знания в T-SQL минимальны. Видите ошибку, укажите. О чем и было изначально мое сообщение.
18 май 13, 16:27    [14316550]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
Glory
Member

Откуда:
Сообщений: 104751
forts
Я уже написал что мои знания в T-SQL минимальны. Видите ошибку, укажите.

Нет, это вы покажите, на каких таких результатах вдруг "order by не отработал"
18 май 13, 16:39    [14316579]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
forts
Member

Откуда:
Сообщений: 143
Glory
forts
Я уже написал что мои знания в T-SQL минимальны. Видите ошибку, укажите.

Нет, это вы покажите, на каких таких результатах вдруг "order by не отработал"

Т.е. в коде за исключением опечаток @O=@P @C=@P ошибок не находите? Код в принципе правильный?
18 май 13, 16:53    [14316606]     Ответить | Цитировать Сообщить модератору
 Re: Можно делать order by по переменной типа datetime при выборке из табличной переменной?  [new]
Glory
Member

Откуда:
Сообщений: 104751
forts
Т.е. в коде за исключением опечаток @O=@P @C=@P ошибок не находите? Код в принципе правильный?

если вы про синтаксические ошибки, то сервер бы вам о них уже сообщил.
А если вас не устраивает результат, то откуда известно, что для вас является правильным результатом ?
18 май 13, 20:03    [14317129]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить