SELECT 
(SELECT COUNT(*) FROM T WHERE [PK] <= a.[PK]) AS id
,xm,xb
FROM T aSELECT 
(SELECT COUNT(*) FROM T WHERE xm + xb <= a.xm + a.xb) AS id
,xm,xb
FROM T a

解决方案 »

  1.   

    -- 如果不能够构造主键,则用临时表:SELECT identity(int,1,1) id,* INTO #t FROM T
    SELECT * FROM #t
      

  2.   

    我现在的表有主键,但记录被删除后ID值就不连续了!我想得到一个连续的ID
      

  3.   

    SELECT identity(int,1,1) id,xm,xb INTO #t FROM T ORDER BY id
    GO
    DELETE T
    GO
    SET IDENTITY_INSERT T ON
    INSERT T(id,xm,xb) SELECT id,xm,xb FROM #t
    SET IDENTITY_INSERT T OFF
    GO
    DROP TABLE #t
    GO
      

  4.   

    服务器: 消息 8108,级别 16,状态 1,行 1
    无法使用 SELECT INTO 语句向表 '#t' 中添加标识列,该表中已有继承了标识属性的列 'id'。gmlxf(烛光) 很厉害,就指望你了分不够我再加50
      

  5.   

    SELECT (SELECT COUNT(*) FROM oa_util_sp WHERE spid <= a.spid ) AS id ,* FROM oa_util_sp a 没问题,OK可麻烦的是我现在对oa_util_sp表要加条件where a.fid=32
    这样,我的记录数就从4,5...开始
    我能问问为什么这么写能提到序数,谢谢
      

  6.   

    SELECT identity(int,1,1) id,xm,xb INTO #t FROM T ORDER BY id
    --
    xm,xb需要是非标志列
      

  7.   

    -- 子查询跟着加条件就可以了
    SELECT (SELECT COUNT(*) FROM oa_util_sp WHERE spid <= a.spid AND fid = a.fid) AS id 
    ,* FROM oa_util_sp a 
    WHERE fid=32
      

  8.   

    哦!!明白了,除我教教我SELECT 
    (SELECT COUNT(*) FROM T WHERE xm + xb <= a.xm + a.xb) AS id
    ,xm,xb
    FROM T a
    的原理外我还想问,这个临时表是不是用完就删除啊!
      

  9.   

    select rownum,a.* from table a;