0

次のクエリがあります。

select 'junior' as type, value
from mytable
union
select 'intermediate' as type, value
from mytable
union
select 'senior' as type, value
from mytable

次のデータを返します。

type          value

Intermediate     10    
Junior            5
Senior            1

こんな感じになるように並べ替えるだけです

Junior          5
Intermediate   10        
Senior          1

カスタム固有の値による順序付けを実現するために使用する order by 句がわかりません。どうすればこれを実現できますか?

4

4 に答える 4

2

ソート キー列を追加してソートするか、値に基づいて単純なケース ステートメントを追加することができます。

-- Sort with Case statement
with sourceData as
(
  select 'junior' type, 5 value
  union all
  select 'intermediate' type, 10 value
  union all
  select 'senior' type, 1 value
)
select * 
from sourceData
order by 
  case type
    when 'junior' then 0
    when 'intermediate' then 1
    when 'senior' then 2
    else null
  end

テスト用のSQL Fiddle 。

于 2013-09-29T20:29:10.457 に答える
0

これを試してみてください。

TYPE, value from ( select type,value , row_number() over ( order by type ) as rowno from #mytable union 選択 type, value, row_number() over ( order by type ) as rowno from #mytable union 選択 type,value 、row_number() over (型順) #mytable からのrownoとして)a order by 2 desc

于 2013-09-30T06:31:38.940 に答える