次のルールを使用していくつかの値を注文する必要があります。
- Dの前にDKで始まる値
- これらの2つのグループ内でアルファベット順に並べ替えます
したがって、値は次のようになります。
- DK207
- D107
- DK107
- D099
そして、彼らは最終的に次のことを望んでいます:
- DK107
- DK207
- D099
- D107
私の現在の試み:
select *
from customers
order by case
WHEN substring(code,1,2) = 'DK' then substring(code,1,2)
WHEN substring(code,1,1) = 'D' then substring(code,1)
END desc,
case
WHEN substring(code,1,2) = 'DK' then substring(code,3)
WHEN substring(code,1,1) = 'D' then substring(code,2)
END asc;
これはDK値では問題なく機能するようですが、Dで始まる値は混乱します。これらは正しくグループ化されていますが、Dの値は降順で並べ替えられているようです。