Oracle SQL:如何为相同的行值获取相同的索引?

时间:2014-06-12 21:36:47

标签: sql oracle indexing

我可能不会在标题中清楚地说明问题,这是我想要的:

我有一个这样的客户表:

CustNo    Name     State   TaxID 

10001     Tom      CA      12354
10001     Tom      CA      12355
10001     Tom      CA      12356
10002     Jack     IL      12354
10002     Jack     IL      12355
10002     Jack     IL      12356
10002     Jack     IL      12357
10002     Jack     IL      12358
10003     Eric     TX      12356
10003     Eric     TX      12359

现在我想在Oracle 10G DB中编写一个查询来获取这样的报告:

  Index  CustNo    Name     State   TaxID 

   1     10001     Tom      CA      12354
   1     10001     Tom      CA      12355
   1     10001     Tom      CA      12356
   2     10002     Jack     IL      12354
   2     10002     Jack     IL      12355
   2     10002     Jack     IL      12356
   2     10002     Jack     IL      12357
   2     10002     Jack     IL      12358
   3     10003     Eric     TX      12356
   3     10003     Eric     TX      12359

规则很明显:同一个CustNo应该具有相同的索引。

如果可能,请在此处尝试查询:http://sqlfiddle.com/#!4/7da53/1

2 个答案:

答案 0 :(得分:1)

您正在寻找dense_rank()

select dense_rank() over (order by CustNo) as theindex,
       t.*
from table t;

答案 1 :(得分:0)

select dense_Rank() over (order by custno) as cIndex
     , CustNo
     , name
     , state
     , taxid 
from customer;