如何将列转换为行并在postgresql中获取其row_number

时间:2014-10-11 07:23:55

标签: sql postgresql

我在某些列中使用 select ,请参阅以下示例

 select 55,5,8,3

,结果将是

enter image description here


那么,如何将其转换为并获取每个的row_number?如下所示

         row.number | col_val
        ------------+--------
              1       55
              2        5
              3        8
              4        3               

2 个答案:

答案 0 :(得分:1)

select *, 
       row_number() over ()
from unnest(array[55,5,8,3]);

虽然不是保证订单总是相同的(但实际上是这样)。

使用即将推出的9.4版本,您可以使用with ordinality选项获得稳定的行号:http://www.postgresql.org/docs/9.4/static/queries-table-expressions.html#QUERIES-TABLEFUNCTIONS

答案 1 :(得分:0)

为此目的a_horse_with_no_name's answer 就够了

或尝试这样的事情

select row_number() over() row_num,col_val from (
select unnest((
 select array[c1,c2,c3,c4] from (
select 55  c1,5 c2 ,8 c3,3 c4 )s 
)) as col_val) b