这个是Excel的,比如是test.xls
欠费年份 欠费开始月份 欠费结束月份 应缴金额(月租)
2001 9 12 94.4
2008 5 12 88.8
2010 8 12 90.4
___________________________________________
这个是表:比如是a表
a(pk,int,not null) //主键,自动增长
b(varchar(19),null) //费款所属期
c(decimal(10,2),null) //应缴金额
___________________________________________
现在我要将test.xls中的数据导入到a表,从开始月份到结束月份要做循环导入,比如第一条2001年的从9月到12月要录入4条数据到a表,导入后的格式如:select * from aa b c
1 2001-09 94.4
2 2001-10 94.4
3 2001-11 94.4
4 2001-12 94.4数据库是MS Sql server 2008小弟我研究了好久,每走一步都很艰难,特别是要做循环导入的时候,字符串拼接,日期格式转换,这些都把我弄得晕晕的,忘各位大虾能够帮助小弟,有点急,在线等
欠费年份 欠费开始月份 欠费结束月份 应缴金额(月租)
2001 9 12 94.4
2008 5 12 88.8
2010 8 12 90.4
___________________________________________
这个是表:比如是a表
a(pk,int,not null) //主键,自动增长
b(varchar(19),null) //费款所属期
c(decimal(10,2),null) //应缴金额
___________________________________________
现在我要将test.xls中的数据导入到a表,从开始月份到结束月份要做循环导入,比如第一条2001年的从9月到12月要录入4条数据到a表,导入后的格式如:select * from aa b c
1 2001-09 94.4
2 2001-10 94.4
3 2001-11 94.4
4 2001-12 94.4数据库是MS Sql server 2008小弟我研究了好久,每走一步都很艰难,特别是要做循环导入的时候,字符串拼接,日期格式转换,这些都把我弄得晕晕的,忘各位大虾能够帮助小弟,有点急,在线等
SET @n = 100 ;
WITH numcte
AS ( SELECT 1 AS n
UNION ALL
SELECT n + 1
FROM numcte
WHERE n < @n
)
SELECT *
INTO Nums
FROM numcte;--创建一个临时数字辅助表Nums
CREATE TABLE tba
(
a INT IDENTITY(1, 1) ,
b VARCHAR(19) ,
c DECIMAL(10, 2)
);
INSERT dbo.tba
( b ,
c
)
SELECT CONVERT(CHAR(7), CONVERT(DATETIME, CONVERT(CHAR(4), a.欠费年份)
+ '-' + CONVERT(VARCHAR(2), a.欠费开始月份 + n - 1) + '-01'), 120) ,
a.[应缴金额(月租)]
FROM ( SELECT *
FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]
) a
JOIN dbo.Nums ON n <= a.欠费结束月份 - a.欠费开始月份 + 1
SELECT *
FROM dbo.tbaDROP TABLE dbo.tba,dbo.Nums
/*
(17 行受影响)
a b c
----------- ------------------- ---------------------------------------
1 2001-09 94.40
2 2001-10 94.40
3 2001-11 94.40
4 2001-12 94.40
5 2008-05 88.80
6 2008-06 88.80
7 2008-07 88.80
8 2008-08 88.80
9 2008-09 88.80
10 2008-10 88.80
11 2008-11 88.80
12 2008-12 88.80
13 2010-08 90.40
14 2010-09 90.40
15 2010-10 90.40
16 2010-11 90.40
17 2010-12 90.40(17 行受影响)
*/