SELECT sname,数学 as sid,英语 as sub,语言 as score into 你要生成的表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\my documents\excel表.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...工作表名$
看错了,用交叉表来处理 SELECT sname ,sum(case sub when '数学' then score end) as 数学 ,sum(case sub when '英语' then score end) as 英语 ,sum(case sub when '语言' then score end) as 语言 into 你要生成的表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\my documents\excel表.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet3$ group by sname
1、先用excel导到一个中间表中 SELECT * into 中间表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...表名 2、得到目标表 select * into 目标表 from ( select sname,'000' sid,'数学' sub,数学 score from 中间表名 union all select sname,'000' sid,'英语' sub,英语 score from 中间表名 union all select sname,'000' sid,'语言' sub,语言 score from 中间表名) tem order by sname3、得到sid declare @a int,@b varchar(100) set @a=0 update 目标表 set @a=case when @b=sname then @a else @a+1 end,@b=sname,sid=right('000'+cast(@a as varchar(3)),3)
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...表名
//导出
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...工作表名$
在excl中,格式为:sname |sub1(课程1的成绩)|sub2|sub3|...|subn|
eg: sname 数学 英语 语言
张三 82 60 75
李四 100 90 100
但要把它转化到sql表中的格式是:sname | sub(课程名) | score ()
即就是 sname sid sub score
张三 001 数学 82
张三 001 英语 60
张三 001 语言 75
李四 002 数学 100
李四 002 英语 90
李四 002 语言 100如何转化啊?
into 你要生成的表名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\my documents\excel表.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...工作表名$
SELECT sname
,sum(case sub when '数学' then score end) as 数学
,sum(case sub when '英语' then score end) as 英语
,sum(case sub when '语言' then score end) as 语言
into 你要生成的表名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\my documents\excel表.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet3$
group by sname
SELECT * into 中间表名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\aa.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...表名
2、得到目标表
select * into 目标表 from (
select sname,'000' sid,'数学' sub,数学 score from 中间表名
union all
select sname,'000' sid,'英语' sub,英语 score from 中间表名
union all
select sname,'000' sid,'语言' sub,语言 score from 中间表名) tem order by sname3、得到sid
declare @a int,@b varchar(100)
set @a=0
update 目标表 set @a=case when @b=sname then @a else @a+1 end,@b=sname,sid=right('000'+cast(@a as varchar(3)),3)