原表
a
a
a
b
b
c
c
c
d
e
变成
a-1
a-2
a-3
b-1
b-2
c-1
c-2
c-3
d-1
e-1

解决方案 »

  1.   

    --CREATE TABLE 原表(NAME VARCHAR(10))
    --INSERT INTO 原表
    --SELECT 'a'
    --UNION ALL 
    --SELECT 'a'
    --UNION ALL 
    --SELECT 'a'
    --UNION ALL 
    --SELECT 'b'
    --UNION ALL 
    --SELECT 'b'
    --UNION ALL 
    --SELECT 'c'
    --UNION ALL 
    --SELECT 'c'
    --UNION ALL 
    --SELECT 'c'
    --UNION ALL 
    --SELECT 'd'
    --UNION ALL 
    --SELECT 'e'
    SELECT NAME+'-'+CONVERT(VARCHAR(10),ROW_NUMBER()OVER(PARTITION BY NAME ORDER BY GETDATE()))
    FROM 原表
    /*
    ---------------------
    a-1
    a-2
    a-3
    b-1
    b-2
    c-1
    c-2
    c-3
    d-1
    e-1
    */
      

  2.   

    --> 测试数据:[TB]
    if object_id('[TB]') is not null drop table [TB]
    GO
    create table [TB]([col] varchar(20))
    insert [TB]
    select 'a' union all
    select 'a' union all
    select 'a' union all
    select 'b' union all
    select 'b' union all
    select 'c' union all
    select 'c' union all
    select 'c' union all
    select 'd' union all
    select 'e'select col+'-'+RTRIM(ROW_NUMBER() OVER (partition BY col ORDER BY col)) from [TB]
    /*---------------------------------------------
    a-1
    a-2
    a-3
    b-1
    b-2
    c-1
    c-2
    c-3
    d-1
    e-1(10 行受影响)
    */drop table [TB]
      

  3.   

    --sql2000DECLARE @a TABLE(a VARCHAR(10),b INT )
    INSERT @a SELECT 'a',NULL 
    UNION ALL SELECT 'a',NULL
    UNION ALL SELECT 'a',NULL
    UNION ALL SELECT 'b',NULL
    UNION ALL SELECT 'b',NULL
    UNION ALL SELECT 'c',NULL
    UNION ALL SELECT 'c',NULL
    UNION ALL SELECT 'c',NULL
    UNION ALL SELECT 'd',NULL
    UNION ALL SELECT 'e',NULLDECLARE @i INT
    DECLARE @t VARCHAR(20)UPDATE @a SET b =@i,@i=CASE WHEN a=@t THEN ISNULL(@i,1)+1 ELSE 1 END ,@t=a SELECT a,a+'-'+LTRIM(b) b FROM @a--result
    /*a          b                       
    ---------- ----------------------- 
    a          a-1
    a          a-2
    a          a-3
    b          b-1
    b          b-2
    c          c-1
    c          c-2
    c          c-3
    d          d-1
    e          e-1(所影响的行数为 10 行)*/ 
      

  4.   

    select (select COUNT(*) from station where 规范站名=mystation.规范站名 and 编号>=mystation.编号 ) as id,
    规范站名 from station as mystation
    order by 规范站名,id不过还要谢谢大家都热心帮助,谢谢给分