可以按特定顺序重新组织结果的SQL语句

时间:2018-10-11 08:15:27

标签: sql sql-server

SELECT Region,Contact
  FROM Salesman_Info
Order by Region DESC;

如上图所示,我编写的上述查询未按请求的顺序执行结果。

我是SQL的新手。

Solution printout

3 个答案:

答案 0 :(得分:1)

您可以使用

with t(region) as
(
 select 'Durban' union all    
 select 'Johannesburg' union all
 select 'Cape Town' 
)
select t.*       
  from t
 order by charindex(' ',region) , region;

如果区域列的顺序是字母顺序的,但由多个单词组成的例外,则应最后排序。

答案 1 :(得分:0)

可能只是sort by子句中的另一个排序字段?

SELECT Region, Contact
  FROM Salesman_Info
Order by Region DESC, Contact;

答案 2 :(得分:0)

下面将使用@Barbaros(+1)建议提供所需的输出。

declare @t table (region nvarchar(20), contact nvarchar(10))

insert into @t values 
('Cape Town','Anna'),
('Cape Town','Fred'),
('Durban','John'),
('Durban','Mary'),
('Johannesburg','Frank'),
('Cape Town','Joe')


select *       
from @t
order by charindex(' ',region) ,region asc, 
    contact asc;

结果

region          contact
Durban          John
Durban          Mary
Johannesburg    Frank
Cape Town       Anna
Cape Town       Fred
Cape Town       Joe