日期:2014-05-17  浏览次数:20634 次

请教个数据库语句问题
若我有如下表,有A、B两列,具体值如下:
A B C
1 2 1
2 2 1
3 2 1
4 3 4
5 3 4
6 7 6
7 7 6
8 7 6
9 2 9
10 2 9
11 2 9
12 2 9  
我想得到类似C这样的一列值,即C是根据B分组边界的第1条记录对应的A值作为C值,但是也不完全是按B分组,像B的第9行之后都是3,与1、2、3行的B值相同,但此时第9行记录不是要取值为1,而是取9,不知道如何能不通过游标的方式快速的得到C列。

------解决方案--------------------
SQL code

select a,b,first_value(a)over(partition by row_,b order by a) c
  from( select a,b,a-row_number()over(partition by b order by a) row_
          from t
      )
 order by a;