SQL порядок по нескольким столбцам с нулями - PullRequest
1 голос
/ 12 мая 2011

У меня есть набор результатов, который выглядит следующим образом в таблице var (извините за плохое форматирование):

RootID | RootName | ChildId | ChildName

1      |  Bob     |  null   |   null   

1      |  null    |    4    |   Tim

1      |  null    |    6    |   Cindy

2      |  Alice   |  null   |   null

2      |  null    |  7      |   Joe 

2      |  null    |    9    |   Jack

3      |  Frank   |  null   |   null 

3      |  null    |   17    |   ken

То, что я хотел бы сделать, это заказать их по RootName ASC, а затем ChildName ASC, чтобы получить их в алфавитном порядке. Какие-либо предложения? Заранее спасибо

Ответы [ 3 ]

1 голос
/ 12 мая 2011

Если это работает для вашего приложения, я бы переписал запрос, чтобы избавиться от нулей. Я не могу не думать, что

RootID | RootName | ChildId | ChildName  
1      |  Bob     |    4    |   Tim  
1      |  Bob     |    6    |   Cindy  
2      |  Alice   |  null   |   Joe   
2      |  Alice   |    4    |   Jack  
3      |  Frank   |    7    |   ken

Было бы легче работать. (Э-э, этот NULL для Алисы / Джо является опечаткой, верно?)

1 голос
/ 13 мая 2011
select rec_id,gr_id from jegad order by 1 desc

select isnull(rec_id,'-'),isnull(gr_id,'-') from jegad order by 1 desc

ЗАКАЗАТЬ ПО СЛУЧАЮ, КОГДА Col NULL, затем 1 остальное 0 End, Col

1 голос
/ 12 мая 2011

Э-э-э ... Как насчет этого?

select * from yourtable order by RootName ASC, ChildName ASC

Вы можете использовать NULLS LAST и NULLS FIRST (по крайней мере, в Oracle), чтобы управлять тем, где в сортировке должны быть размещены нули.

...