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 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相同,否则不一样,要从一开始编号,谢谢
解决方案 »
- EXISTS、IN与JOIN性能分析
- java连接sql server 2000时出错
- sql中转义符怎么写,如:select * from a where b=''h'',即单引号怎么写
- 非常简单的问题
- 小女子来求助。。。我的sql2008第一次使用导入导出数据工具.
- 关于如何用存储过程生成随即卡号问题
- 我想学SQL的菜鸟
- SQL中的游标的使用
- 更新表的问题求助
- 重新问:用 insert into...from ...语句把SQL Server数据复制到本地oracle库的问题?
- SQL Server 2005 for xml XX
- 小f 2010就属您最红 sql2000服务器,一开机就不运行,点击运行没有用,我每次都去给别人重装sql,怎么办???
-- 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 行)*/
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
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
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
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
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
update s set number=(select count(distinct btsid) from s where btsid<=a.btsid) from s a
这样语句可以,但是存在个问题,我想按BssID,Btsid,CellID排序,再赋值1,2,3
该怎办,谢谢!
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
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
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