2014-09-24 45 views
0

我的列名爲type-row有以下值(A,B,C,D,E ...)我需要做一個查詢,將排序結果排序列類型行,但我不希望他們在一起我想要的結果要進行插值如下SQL Order行與一個類型的每一列

id --- some-column -- type-row 
1 --- 'bla1' ------- A 
2 --- 'bla2' ------- B 
3 --- 'bla3' ------- C 
4 --- 'bla4' ------- D 
5 --- 'bla5' ------- E 
6 --- 'bla6' ------- A 
7 --- 'bla7' ------- B 
8 --- 'bla8' ------- C 
9 --- 'bla9' ------- D 

等等... 反正有使這對SQL甚至JPA?我把PostgreSQL JPA

+1

樣本輸出顯示你被訂購'id'。還有數據庫如何知道如何訂購'類型 - 行',因爲您有字母重複,數據庫如何知道哪一個應該先到達。 – Chaitanya 2014-09-24 16:35:20

+0

我假設你想要:第一個A,第一個B,第一個C,第一個D,第一個E,第二個A,第二個B ...等等。對postgres不夠熟悉,但是在子查詢中或臨時表,您可以通過類型行進行排序,然後根據該排序分配類型行ID,然後按該新值加上類型行進行排序。 – bd33 2014-09-24 16:38:00

+0

@ bd33這正是我想要的!任何建議我怎麼能做到這一點? – vinyoliver 2014-09-24 17:19:35

回答

2

您可以在SQL做到這一點通過的type-row每一個值,你可以利用窗口函數做枚舉值:

select t.* 
from table t 
order by row_number() over (partition by typerow order by id), 
     typerow;