2015-05-12 63 views
-1

我有查询:如何获取有关位置元素在表中的信息?

Select * from mytable order by 'date' 

而且结果:

date | item_id | user_id | some_data 
------------------------------------------ 
2015-01-01 |  1 |  1 | null 
2015-01-01 |  1 |  1 | null 
2015-01-02 |  1 |  1 | null 
2015-01-03 |  1 |  1 | null 
2015-01-03 |  1 |  2 | null 
2015-01-04 |  1 |  1 | null 
2015-01-05 |  1 |  2 | null 

我想其中USER_ID = 2。在这个例子中是5怎么做第一排的位置?

+1

'order by'date''是无效的SQL。 ''date''是一个字符文字,而不是列名 –

+2

查看'row_number()' –

回答

2
select pos_overall 
from (
    select user_id, 
     row_number() over (order by "date") as pos_overall, 
     row_number() over (partition by user_id order by "date") as user_pos 
    from mytable 
) t 
where user_id = 2 
    and user_pos = 1 
1

您可以使用ROW_NUMBER()函数与数日期,USER_ID的订单行,然后选择最小值:

select min(rn) 
from (
    select 
    user_id, row_number() over (order by date, user_id) as rn 
    from mytable 
) x 
where user_id = 2; 

如果ITEM_ID可以改变你可能要包括在派生表中的row_number函数的order by子句中。

相关问题