我在下面有以下GlobalTax表,我需要按TaxCode排序,但需要使用特定的排序顺序。第一组项目应该是Type column ='F'的第一个字符,然后是'S',最后是'L'
我可以按照这样的类型进行排序:
select TaxCode,
Type,
CASE WHEN LEFT(gt.Type, 1) = 'F' THEN 1
WHEN LEFT(gt.Type, 1) = 'S' THEN 2
WHEN LEFT(gt.Type, 1) = 'L' THEN 3
ELSE 4
END as SortOrder
from GlobalTax gt
order by sortorder
返回:
但是,它不是按TaxCode按字母顺序排序每个集合。 我错过了什么?
这是一个小提琴:http://rextester.com/JGLNP57037
答案 0 :(得分:2)
只需按以下顺序添加税码:
select TaxCode,
Type,
CASE WHEN LEFT(gt.Type, 1) = 'F' THEN 1
WHEN LEFT(gt.Type, 1) = 'S' THEN 2
WHEN LEFT(gt.Type, 1) = 'L' THEN 3
ELSE 4
END as SortOrder
from GlobalTax gt
order by sortorder, taxcode
您还可以简化case
表达式:
select TaxCode,
Type,
CASE LEFT(gt.Type, 1)
WHEN 'F' THEN 1
WHEN 'S' THEN 2
WHEN 'L' THEN 3
ELSE 4
END as SortOrder
from GlobalTax gt
order by sortorder, taxcode