一个表tb1
A      B  
2000   1  
2003   1
2000   2
2002   1
......
通过select * from tb1 order by A,B选出来以后
2000 1
2000 2
2000 3
......
2001 1
2001 2
.....这样,我想加一个字段C,C得值就是这个select 出来记录得序号,请问有什么SQL可以一把实现理想得结果是
A      B   C
2000   1   1
2002   1   300(假设排序号300)
2000   2   2

解决方案 »

  1.   

    select *,newfield=b from tb1
      

  2.   

    望里边写东西??可以用DELPHI中的计算字段,也可以做个临时表
      

  3.   

    加了一个C字段之后内容为空
    A    B  C
    2000 1
    2000 2
    2000 3
    ......
    2001 1
    2001 2
    .....
    我要让C得值是select * from tb1 order by a,b之后得序号
      

  4.   

    select (select sum(A) from(Select * From TB) m where m.A<t.A)as C,* from (Select * From TB )t order by TB.A,TB.B 
      

  5.   

    select *, IDENTITY(int,1,1) as C from TB order by a, b
      

  6.   

    刚这个好像领会错了
    select TB.A,TB.B,TC.C from TB,(Select A,B,IDENTITY(int,1,1) as C) TC where TB.A=TC.A and TB.B=TC.B order by TB.A,TB.B
      

  7.   

    select *,(select IDENTITY(int,1,1) from tb1 b where a.a=b.a and a.b=b.b ) c from tb1 a order by A,B
      

  8.   

    都是关键字IDENTITY附近有语法错误,我是要写入C的值,而并不是要SELECT出来
      

  9.   

    select tblB.aa, tblB.bb, IDENTITY(int, 1, 1) as C into #Temp from tblB
      

  10.   

    c字段用 indentity 好了,反正每次都是从1 开始.
      

  11.   

    --相当子查询就可以了!
    --测试环境
    DECLARE @T TABLE(F1 INT,F2 INT,F3 INT)
    INSERT @T (F1,F2)
    SELECT 2000,1 UNION ALL
    SELECT 2000,2 UNION ALL
    SELECT 2000,3 UNION ALL
    SELECT 2001,1 UNION ALL 
    SELECT 2001,2 SELECT * FROM @T
    --更新F3列
    UPDATE A  
    SET
    F3=(SELECT F2 FROM @T WHERE F1=A.F1 AND F2=A.F2)
    FROM @T A
    --结果
    SELECT * FROM @T