首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么按某一字段内容把一个表拆分成多个表

2012-02-10 
如何按某一字段内容把一个表拆分成多个表?有表如下:IDNAMECLASS1AAII2BBIV3ABIV4ACII5CCIX6SSII7ASIX8ESIX

如何按某一字段内容把一个表拆分成多个表?
有表如下:
ID         NAME           CLASS
1           AA                 II              
2           BB                 IV              
3           AB                 IV                
4           AC                 II                
5           CC                 IX                
6           SS                 II                    
7           AS                 IX                
8           ES                 IX    
---------------------
用什么方法可以吧上的表按照class的内容分成多个表
结果如下:
ID         NAME           CLASS
1           AA               II
4           AC               II
6           SS               II
--------------------
ID         NAME           CLASS  
2           BB               IV              
3           AB               IV  
--------------------
ID         NAME           CLASS      
5           CC               IX    
7           AS               IX                
8           ES               IX



[解决办法]
insert into table1 select * from tablename where class= 'II '
insert into table2 select * from tablename where class= 'IV '
insert into table3 select * from tablename where class= 'IX '
[解决办法]
DECLARE @CLASS sysname, @s nvarchar(4000)
DECLARE tb CURSOR LOCAL
FOR
SELECT DISTINCT
CLASS
FROM 你的表
OPEN tb
FETCH tb INTO @CLASS
WHILE @@FETCH_STATUS = 0
BEGIN
SET @s = N '
SELECT *
INTO ' + QUOTENAME( 'tb_ ' + @CLASS) + N ' -- 生成的表名为: tb_ <CLASS> , 根据需要自行调整
FROM 你的表
WHERE CLASS = @CLASS
'
EXEC sp_executesql @s, N '@CLASS sysname ', @CLASS
FETCH tb INTO @CLASS
END
CLOSE tb
DEALLOCATE tb
------解决方案--------------------


关注
[解决办法]
create table T(ID int, NAME varchar(10), CLASS varchar(10))
insert T select 1, 'AA ', 'II '
union all select 2, 'BB ', 'IV '
union all select 3, 'AB ', 'IV '
union all select 4, 'AC ', 'II '
union all select 5, 'CC ', 'IX '
union all select 6, 'SS ', 'II '
union all select 7, 'AS ', 'IX '
union all select 8, 'ES ', 'IX '

declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ' select * into '+quotename( 'T_ '+CLASS)+ ' from T where CLASS= '+quotename(CLASS, ' ' ' ')+ '; ' from T group by CLASS
exec(@sql)

select * from [T_II]
select * from [T_IV]
select * from [T_IX]
[解决办法]
关注``
[解决办法]



declare @classname varchar(20)
declare cursor_t cursor
for select distinct class from t order by class

open cursor_t

fetch next from cursor_t
into @classname

while @@fetch_status = 0
begin
declare @sql varchar(8000)

select @sql = 'select [ID], [NAME], CLASS into CLASS ' + @classname
+ ' from t where class = ' ' ' + @classname + ' ' ' '

exec(@sql)

fetch next from cursor_t
into @classname
end

close cursor_t
deallocate cursor_t


select * from [CLASSII]
select * from [CLASSIV]
select * from [ClASSIX]



[解决办法]
学习
[解决办法]
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance)

USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type

热点排行
Bad Request.