SQL里有两列,省,市省 , 市广东, 广州
广东, 深圳
广东, 汕头
海南, 海口
海南, 三亚
想要的结果如下,有三个列,序号,省,市.序号 , 省, 市1 , 广东, 广州
  广东, 深圳
  广东, 汕头
2 , 海南, 海口
  海南, 三亚
这个序号呢,是按省来排的,请问在SQL里如何写呢??
由于我是在水晶报表中的,要是能有水晶报表的formula里写的更好。

解决方案 »

  1.   

    select 序号=rank() over(partition by 省 order by getdate()),* from tb
      

  2.   

    select DENSE_RANK() over (order by 省) as 序号,省, 市
    from tb
      

  3.   

    create table tb(name1 varchar(10),name2 varchar(10))
    insert into tb
    select '广东', '广州' union
    select '广东', '深圳' union
    select '广东', '汕头' union
    select '海南', '海口' union
    select '海南', '三亚'select 序号=DENSE_RANK() over(order by name1),* from tb/*
    序号                   name1      name2
    -------------------- ---------- ----------
    1                    广东         广州
    1                    广东         汕头
    1                    广东         深圳
    2                    海南         海口
    2                    海南         三亚