大家好,请看下面的表格
Name
----------
Banaskantha - 66-DV
Banaskantha - 66-MM
Banaskantha-Dv
Banaskantha-MM
Bharuch - 77-RP
Bharuch-RP
hg-SR
但我希望此表格按以下顺序
Name
-------------
Banaskantha-Dv
Banaskantha-MM
Banaskantha - 66-DV
Banaskantha - 66-MM
Bharuch-RP
Bharuch - 77-RP
hg-SR
我该怎么做?
答案 0 :(得分:0)
尝试以下sql语句:
SELECT name,
case isnumeric(SUBSTRING(name, LEN(name)-4,2))
when 1 then
left(name, len(name)-8) + 'z' + RIGHT(name, 2) + '-' + SUBSTRING(name, LEN(name)-4,2)
else name
end as sortby
FROM [your table name]
order by sortby
查询添加了一个用于排序目的的字段。该字段的值取决于名称字段中是否包含数值。如果是,则将其转换为perfix(即'Banaskantha')+'z'(因此它将在没有后缀的前缀的任何实例之下),后缀(即'DV')+数值。如果没有数值,则保留原始值。
我做了几个假设:
如果其中一个假设不正确,请相应地重写SQL语句。
让我说问题开始是因为字段值没有一致性。在这种情况下,我建议在表中创建一个字段用于排序,并根据插入和更新触发器填充它。