有个SQL不会写,来这里找大家帮帮忙,谢谢了!!比如数据是这样的
id assetname   person
 1   计算机      张三
 2   椅子        赵六
 3   计算机      李四
 4   计算机      王五
 5   椅子        冯七
 6   桌子        蒋八想要的结果
 aid assetname  person
  1   计算机    张三
  1   计算机    赵六
  1   计算机    李四
  2   椅子      王五
  2   椅子      赵六
  3   桌子      冯七其实就是一种设备一个序号号 按assetname排序
   

解决方案 »

  1.   

    select dense_rank()over(order by assetname)aid,
      assetname,person
    from table1
    order by 1
      

  2.   

    select (select min(id) from table1 where assetname=a.assetname) as aid
    assetname,person
    from table1 a
    order by aid
      

  3.   

    DENSE_RANK()说明:返回结果集分区中行的排名,在排名中没有任何间断。行的排名等于所讨论行之前的所有排名数加一。
    语法:DENSE_RANK () OVER ( [ < partition_by_clause > ] < order_by_clause > )
    备注:如果有两个或多个行受同一个分区中排名的约束,则每个约束行将接收相同的排名。学习了