Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Order by


Автор: sol78 1.6.2008, 18:04
Мне нужно написать запрос, который далал селекцию по возростанию, но значения равные -1 ставил бы в конец :
Код

SELECT Name, Units, Description, TimeOutSecs, ListOrder FROM TBL_ReportVars WHERE ScriptID = ...
        Order by ListOrder

значения ListOrder == -1 ставит всегда в начало...помогите плз ...

Автор: Magnifico 1.6.2008, 18:52
Код

order by 
case when ListOrder = -1 then 1000000000 else ListOrder end


Автор: skyboy 1.6.2008, 19:45
именно "-1" или вообще все отрицательные?
если второе, то
Код

ORDER BY 
sign(listorder) DESC, listorder

Автор: sol78 1.6.2008, 20:25
skyboy, именно -1
может есть еще варианты?

Добавлено через 1 минуту и 41 секунду
union из этой оперы?

Автор: skyboy 1.6.2008, 21:39
Цитата(sol78 @  1.6.2008,  19:25 Найти цитируемый пост)
именно -1

тогда
Код

order by listorder = -1 ASC, listorder

Автор: sol78 2.6.2008, 09:24
Код

SELECT Name, Units, Description, TimeOutSecs, ListOrder FROM TBL_ReportVars 
WHERE ScriptID = 9
ORDER BY ListOrder = -1 ASC, ListOrder

почему не работает?:
Incorrect syntax near '='.

(MSSQL)

Автор: skyboy 2.6.2008, 09:47
Цитата(sol78 @  2.6.2008,  08:24 Найти цитируемый пост)
MSSQL

молодец. вовремя.

Добавлено через 2 минуты и 13 секунд
тогда используй способ, предложенный Magnifico.

Автор: sol78 2.6.2008, 09:55
а union для етой цели подойдет?
если да, то как?

Автор: sol78 2.6.2008, 10:38
skyboy,  код Magnifico не пошел на DB2 
- не ужеле нельзя найти что то стардатное для DB2  и MSSQL(2000/ 2005) и желательно Oracle?? smile 

Автор: Deniz 2.6.2008, 10:53
Ну тогда пользуй union:
Код
SELECT 1, Name, Units, Description, TimeOutSecs, ListOrder FROM TBL_ReportVars 
WHERE ScriptID = 9 and ListOrder <> -1
union
SELECT 2, Name, Units, Description, TimeOutSecs, ListOrder FROM TBL_ReportVars 
WHERE ScriptID = 9 and ListOrder = -1
ORDER BY 1, 6

Автор: sol78 2.6.2008, 14:14
Большое спасибо!
Тема закрыта!

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