把两个表的数据插入到一个新表中的方法_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1613 | 回复: 0   主题:  把两个表的数据插入到一个新表中的方法        下一篇 
薯片
注册用户
等级:中士
经验:237
发帖:75
精华:0
注册:2012-2-10
状态:离线
发送短消息息给薯片 加好友    发送短消息息给薯片 发消息
发表于: IP:您无权察看 2014-12-25 10:30:34 | [全部帖] [楼主帖] 楼主

 CREATE PROCEDURE [dbo].[GetAllStuClickTime]

@stime nvarchar(20),--开始时间

@etime nvarchar(20)--结束时间

--时间为第一个循环体  以这个时间段为范围

AS

BEGIN

declare @days int

declare @datediff int

declare @datetime datetime

declare @count INT

declare @classID nvarchar(50)

declare @people nvarchar(20)--学生卡号

declare @type nvarchar(50)--打卡类型

declare @typeValue nvarchar(50)--打卡类型Value值

set datefirst 1

set @count = 0

set @days = 0

set @datediff = datediff(day,@stime,@etime)

while @days <= @datediff          --为天数(第几天第几天)

begin

set @datetime = dateadd(day,@days,@stime)

--第二个循环取出学生表中的学生姓名,班级编号

--新建游标

declare StuClickTime cursor for select ClassName,TTCard from dbo.vw_StudentInfo

--打开游标

open StuClickTime

--从游标里取出数据给 变量 赋值

fetch next from StuClickTime into @classID,@people

begin

--判断游标的状态

-- 0 fetch语句成功    

-- -1 fetch语句失败或此行不在结果集中    

-- -2被提取的行不存在

while @@fetch_status = 0

begin

--第三个循环体,将每个学生的每个类型循环

--新建游标

declare StuClickTimeTyp cursor for select PBC_Name,PBC_Value from TB_Code where PBC_Node=48

--打开游标

open StuClickTimeTyp

--从游标里取出数据给 变量 赋值

fetch next from StuClickTimeTyp into @type,@typeValue

begin

--判断游标的状态

-- 0 fetch语句成功    

-- -1 fetch语句失败或此行不在结果集中    

-- -2被提取的行不存在

while @@fetch_status = 0

begin

--判断新表中是否存在此条循环出来的数据

set @count = (select isnull(count(*),0) from dbo.Sm_CheckInout where UserID=@people and resultType=@type and ClockTime=@datetime )

if(@count = 0)

begin

insert into Sm_CheckInout(ClassID,UserID,resultType,ClockTime,resultTypeValue) values(@classID,@people,@type,@datetime,@typeValue)

end

--用游标去取下一条记录

fetch next from StuClickTimeTyp into @type,@typeValue

end

end

--关闭游标

close StuClickTimeTyp

--撤销游标

deallocate StuClickTimeTyp

--用游标去取下一条记录

fetch next from StuClickTime into @classID,@people

end

end

--关闭游标

close StuClickTime

--撤销游标

deallocate StuClickTime

set @days = @days + 1    --循环完了一天然后加一

end

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论