请问一下我的一个表中有姓名和编号2列,姓名有重复的,如何让编号自动生成如果同个姓名满了六个则编号递加1若换姓名了编号也递加1,比如   编号     姓名
                   1       张三
                   1       张三
                   1       张三
                   1       张三
                   1       张三
                   1       张三
                   2       张三
                   3       李四
                   

解决方案 »

  1.   

    2005及以上版本可用:
    DROP TABLE #tp
    CREATE TABLE #tp
    (
     id INT,
     NAME VARCHAR(10)
    )
    INSERT INTO #tp
    SELECT 1001,'aa' UNION ALL
    SELECT 1002,'aa' UNION ALL
    SELECT 1003,'aa' UNION ALL
    SELECT 1004,'aa' UNION ALL
    SELECT 1008,'hh' UNION ALL
    SELECT 1005,'aa' UNION ALL
    SELECT 1006,'aa' UNION ALL
    SELECT 1007,'aa' UNION ALL
    SELECT 1009,'xx'SELECT id,NAME,row_new=row/7 +rk
    FROM(
    SELECT * ,DENSE_RANK()OVER(ORDER BY NAME)rk
    ,ROW_NUMBER()OVER(ORDER BY GETDATE())row
    FROM #tp t
    )Mid          NAME       row_new
    ----------- ---------- --------------------
    1001        aa         1
    1002        aa         1
    1003        aa         1
    1004        aa         1
    1005        aa         1
    1006        aa         1
    1007        aa         2
    1008        hh         3
    1009        xx         4(9 row(s) affected)
      

  2.   

    提示消息 195,级别 15,状态 10,第 19 行
    'DENSE_RANK' 不是可以识别的 函数名。
      

  3.   

    select @@version 看看版本
    2005以上才可以用。