Number City BssID BtsID CellID CI
海口 1 61 0 11711
海口 1 61 1 11712
海口 1 61 2 11713
海口 1 122 0 11961
海口 1 122 1 11962
海口 1 122 2 11963
海口 1 253 0 13061
海口 1 253 1 13062
海口 1 253 2 13063Number City BssID BtsID CellID CI
1 海口 1 61 0 11711
1 海口 1 61 1 11712
1 海口 1 61 2 11713
2 海口 1 122 0 11961
2 海口 1 122 1 11962
2 海口 1 122 2 11963
3 海口 1 253 0 13061
3 海口 1 253 1 13062
3 海口 1 253 2 13063如何将上面数据更新为下面的数据,BssID与BtsID相同,则Number相同,否则不一样,要从一开始编号,谢谢

解决方案 »

  1.   

    select Number = (select COUNT(DISTINCT BssID) from tb where BssID >= t.BssID) from tb t
      

  2.   

    ----------------------------------------------------------------
    -- Author  :SQL77(只为思齐老)
    -- Date    :2010-01-12 15:06:27
    -- Version:
    --      Microsoft SQL Server  2000 - 8.00.194 (Intel X86) 
    -- Aug  6 2000 00:57:48 
    -- Copyright (c) 1988-2000 Microsoft Corporation
    -- Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:[TB]
    if object_id('[TB]') is not null drop table [TB]
    go 
    create table [TB]([Number] varchar(4),[City] int,[BssID] int,[BtsID] int,[CellID] int,[CI] INT)
    insert [TB]
    select '海口',1,61,0,11711,null union all
    select '海口',1,61,1,11712,null union all
    select '海口',1,61,2,11713,null union all
    select '海口',1,122,0,11961,null union all
    select '海口',1,122,1,11962,null union all
    select '海口',1,122,2,11963,null union all
    select '海口',1,253,0,13061,null union all
    select '海口',1,253,1,13062,null union all
    select '海口',1,253,2,13063,null
    --------------开始查询--------------------------select (SELECT COUNT(DISTINCT BssID) FROM TB WHERE BssID<=T.BssID ) AS ID ,*   from [TB] T
    ----------------结果---------------------------
    /* 
    (所影响的行数为 9 行)ID          Number City        BssID       BtsID       CellID      CI          
    ----------- ------ ----------- ----------- ----------- ----------- ----------- 
    1           海口     1           61          0           11711       NULL
    1           海口     1           61          1           11712       NULL
    1           海口     1           61          2           11713       NULL
    2           海口     1           122         0           11961       NULL
    2           海口     1           122         1           11962       NULL
    2           海口     1           122         2           11963       NULL
    3           海口     1           253         0           13061       NULL
    3           海口     1           253         1           13062       NULL
    3           海口     1           253         2           13063       NULL(所影响的行数为 9 行)*/
      

  3.   

    create table tb(Number int, City varchar(10) , BssID int,BtsID int,CellID int,CI int)
    insert into tb values(null,'海口' ,1, 61 , 0 ,11711 )
    insert into tb values(null,'海口' ,1, 61 , 1 ,11712 )
    insert into tb values(null,'海口' ,1, 61 , 2 ,11713 )
    insert into tb values(null,'海口' ,1, 122, 0 ,11961 )
    insert into tb values(null,'海口' ,1, 122, 1 ,11962 )
    insert into tb values(null,'海口' ,1, 122, 2 ,11963 )
    insert into tb values(null,'海口' ,1, 253, 0 ,13061 )
    insert into tb values(null,'海口' ,1, 253, 1 ,13062 )
    insert into tb values(null,'海口' ,1, 253, 2 ,13063 )
    go--查询
    select t1.number , t2.City , t2.BssID,t2.BtsID,t2.CellID,t2.CI from tb t2,
    (select Number = (select count(1) from (select * FROM (select distinct BssID ,BtsID from tb) t) n where BssID = m.BssID and BtsID < m.BtsID) + 1 , * from (select * FROM (select distinct BssID ,BtsID from tb) t) m) t1
    where t2.BssID = t1.BssID and t2.BtsID = t1.BtsID/*
    number      City       BssID       BtsID       CellID      CI          
    ----------- ---------- ----------- ----------- ----------- ----------- 
    1           海口         1           61          0           11711
    1           海口         1           61          1           11712
    1           海口         1           61          2           11713
    2           海口         1           122         0           11961
    2           海口         1           122         1           11962
    2           海口         1           122         2           11963
    3           海口         1           253         0           13061
    3           海口         1           253         1           13062
    3           海口         1           253         2           13063(所影响的行数为 9 行)
    */--更新
    update tb 
    set number = t1.number
    from tb t2 , (select Number = (select count(1) from (select * FROM (select distinct BssID ,BtsID from tb) t) n where BssID = m.BssID and BtsID < m.BtsID) + 1 , * from (select * FROM (select distinct BssID ,BtsID from tb) t) m) t1
    where t2.BssID = t1.BssID and t2.BtsID = t1.BtsID
    select * from tb
    /*
    number      City       BssID       BtsID       CellID      CI          
    ----------- ---------- ----------- ----------- ----------- ----------- 
    1           海口         1           61          0           11711
    1           海口         1           61          1           11712
    1           海口         1           61          2           11713
    2           海口         1           122         0           11961
    2           海口         1           122         1           11962
    2           海口         1           122         2           11963
    3           海口         1           253         0           13061
    3           海口         1           253         1           13062
    3           海口         1           253         2           13063(所影响的行数为 9 行)
    */drop table tb
      

  4.   

    怎么那么复杂?有没有简单点,按BssID与BtsID分组
    update tb 
    set number = t1.number
    from tb t2 , (select Number = (select count(1) from (select * FROM (select distinct BssID ,BtsID from tb) t) n where BssID = m.BssID and BtsID < m.BtsID) + 1 , * from (select * FROM (select distinct BssID ,BtsID from tb) t) m) t1
    where t2.BssID = t1.BssID and t2.BtsID = t1.BtsID
    select * from tb
      

  5.   

    上面的不对,BSSID变化后,不要从1开始编号,而应该是继续+1
      

  6.   

    drop table tb
    create table tb(Number int, City varchar(10) , BssID int,BtsID int,CellID int,CI int)
    insert into tb values(null,'海口' ,1, 61 , 0 ,11711 )
    insert into tb values(null,'海口' ,1, 61 , 1 ,11712 )
    insert into tb values(null,'海口' ,1, 61 , 2 ,11713 )
    insert into tb values(null,'海口' ,1, 122, 0 ,11961 )
    insert into tb values(null,'海口' ,1, 122, 1 ,11962 )
    insert into tb values(null,'海口' ,1, 122, 2 ,11963 )
    insert into tb values(null,'海口' ,1, 253, 0 ,13061 )
    insert into tb values(null,'海口' ,1, 253, 1 ,13062 )
    insert into tb values(null,'海口' ,1, 253, 2 ,13063 )
    goupdate t
    set Number = (select count(distinct BtsID) from tb where BtsID<=t.BtsID)
    from tb tselect * from tb--------------------------------
    1 海口 1 61 0 11711
    1 海口 1 61 1 11712
    1 海口 1 61 2 11713
    2 海口 1 122 0 11961
    2 海口 1 122 1 11962
    2 海口 1 122 2 11963
    3 海口 1 253 0 13061
    3 海口 1 253 1 13062
    3 海口 1 253 2 13063
      

  7.   

    --> 测试数据: s
    create table s(Number int,City varchar(4),BssID int,BtsID int,CellID int,CI int)
    insert into s
    select null,'海口',1,61,0,11711 union all
    select null,'海口',1,61,1,11712 union all
    select null,'海口',1,61,2,11713 union all
    select null,'海口',1,122,0,11961 union all
    select null,'海口',1,122,1,11962 union all
    select null,'海口',1,122,2,11963 union all
    select null,'海口',1,253,0,13061 union all
    select null,'海口',1,253,1,13062 union all
    select null,'海口',1,253,2,13063update s set number=(select count(distinct btsid) from s where btsid<=a.btsid) from s aselect * from s
      

  8.   

    像这样
    Num City BssID BtsID CellID CI
    1 海口 1 61 0 11711
    1 海口 1 61 1 11712
    1 海口 1 61 2 11713
    2 海口 1 122 0 11961
    2 海口 1 122 1 11962
    2 海口 1 122 2 11963
    3 海口 1 253 0 13061
    3 海口 1 253 1 13062
    3 海口 1 253 2 13063
    4 三亚 2 12 0 30221
    4 三亚 2 12 1 30222
    4 三亚 2 12 2 30223
    5 三亚 2 15 0 31031
    5 三亚 2 15 1 31032
    5 三亚 2 15 2 31033
      

  9.   

    同样谢谢楼上的,
    update s set number=(select count(distinct btsid) from s where btsid<=a.btsid) from s a
    这样语句可以,但是存在个问题,我想按BssID,Btsid,CellID排序,再赋值1,2,3
    该怎办,谢谢!
      

  10.   

    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([Number] int,[City] varchar(4),[BssID] int,[BtsID] int,[CellID] int,[CI] int)
    insert [tb]
    select null,'海口',1,61,0,11711 union all
    select null,'海口',1,61,1,11712 union all
    select null,'海口',1,61,2,11713 union all
    select null,'海口',1,122,0,11961 union all
    select null,'海口',1,122,1,11962 union all
    select null,'海口',1,122,2,11963 union all
    select null,'海口',1,253,0,13061 union all
    select null,'海口',1,253,1,13062 union all
    select null,'海口',1,253,2,13063 union all
    select null,'三亚',2,12,0,30221 union all
    select null,'三亚',2,12,1,30222 union all
    select null,'三亚',2,12,2,30223 union all
    select null,'三亚',2,15,0,31031 union all
    select null,'三亚',2,15,1,31032 union all
    select null,'三亚',2,15,2,31033update t
    set Number = (select count(distinct left(CI,4)) from tb where left(CI,4)<=left(t.CI,4))
    from tb tselect * from [tb]--------------------------------
    1 海口 1 61 0 11711
    1 海口 1 61 1 11712
    1 海口 1 61 2 11713
    2 海口 1 122 0 11961
    2 海口 1 122 1 11962
    2 海口 1 122 2 11963
    3 海口 1 253 0 13061
    3 海口 1 253 1 13062
    3 海口 1 253 2 13063
    4 三亚 2 12 0 30221
    4 三亚 2 12 1 30222
    4 三亚 2 12 2 30223
    5 三亚 2 15 0 31031
    5 三亚 2 15 1 31032
    5 三亚 2 15 2 31033
      

  11.   

    update t
    set Number = (select count(distinct left(CI,len(CI)-1)) from tb where left(CI,len(CI)-1)<=left(t.CI,len(CI)-1))
    from tb t
      

  12.   

    UPDATE A
    SET NUMBER = (SELECT COUNT(DISTINCT BTSID) FROM TA B
                  WHERE B.BASSID < A.BASSID OR (B.BASSID = A.BASSID AND B.BTSID <= A.BTSID)
                  ) 
    FROM  TA A或;WITH TB AS
    (SELECT *, ROW = DENSE_RANK() OVER (ORDER BY BASSID, BTSID)
     FROM TA
    )
    UPDATE TB
    SET NUMBER = ROW