我有一个列Name NVARCHAR(100)
的表。
表中的数据如下所示:
Wang
Bergeron
Zhang
Sorrentino
Mazumdar
Boggs
Fricker
Barkwell
Atkinson
Mah
Test CB1 C1*(
--Test Contact--
--TEST CONTACT--
--ABC CONTACT--
Retest Contact
Janzen
Seto
Boggs
Fricker
Barkwell
我期待结果像
--ABC CONTACT--
--Test Contact--
--TEST CONTACT--
Atkinson
Barkwell
Barkwell
Bergeron
Boggs
Boggs
Fricker
Fricker
Janzen
Mah
Mazumdar
Retest Contact
Seto
Sorrentino
Test CB1 C1*(
Wang
Zhang
请求您的支持以重新解决此排序
答案 0 :(得分:2)
您可以在Order By
中使用Case-Statement。
declare @temp table(
Name varchar(100)
)
insert into @temp
SELECT * FROM (SELECT 'Wang' UNION ALL SELECT 'Bergeron' UNION ALL SELECT 'Zhang' UNION ALL SELECT 'Sorrentino' UNION ALL SELECT 'Mazumdar' UNION ALL SELECT 'Boggs' UNION ALL SELECT 'Fricker' UNION ALL SELECT 'Barkwell' UNION ALL SELECT 'Atkinson' UNION ALL SELECT 'Mah' UNION ALL SELECT 'Test CB1 C1*(' UNION ALL SELECT '--Test Contact--' UNION ALL SELECT '--TEST CONTACT--' UNION ALL SELECT '--ABC CONTACT--' UNION ALL SELECT 'Retest Contact' UNION ALL SELECT 'Janzen' UNION ALL SELECT 'Seto' UNION ALL SELECT 'Boggs' UNION ALL SELECT 'Fricker' UNION ALL SELECT 'Barkwell')AS T(Spalte);
select * from @temp
ORDER BY (CASE WHEN [Name] LIKE '-%' THEN 0 ELSE 1 END), [Name]
答案 1 :(得分:1)
可能在order子句中有一个case语句:
SELECT *
FROM myTable
ORDER BY CASE WHEN Name LIKE '-%' THEN 1 ELSE 0 END DESC,
Name ASC