|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
目前的方案是用mysqlbinlog工具,增加一个Flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。
--竖表变行表
--创立表
createtableA(
工号varchar(20),
日期smalldatetime,
工夫varchar(20)
)
--拔出测试数据
insertintoAselect01,2004-10-01,07:50
unionselect01,2004-10-01,11:35
unionselect01,2004-10-01,14:20
unionselect01,2004-10-02,08:01
unionselect01,2004-10-02,14:30
unionselect02,2004-10-01,07:55
unionselect02,2004-10-02,07:58
unionselect03,2004-10-01,07:56
--创立存储历程
createprocp_t
as
declare@idvarchar(20),@datesmalldatetime,@timevarchar(50)
select*into#afromAorderby工号,日期,工夫
update#aset工夫=casewhen(工号=@id)and(日期=@date)then@timeelse工夫end,
@time=casewhen(工号=@id)and(日期=@date)then@time+,+工夫else工夫end,
@id=工号,@date=日期
select工号,日期,max(工夫)as工夫from#agroupby工号,日期orderby工号
--实行
execp_t
--测试了局
工号日期工夫
---------------------------------------------
012004-10-0100:00:0007:50,11:35,14:20
012004-10-0200:00:0008:01,14:30
022004-10-0100:00:0007:55
022004-10-0200:00:0007:58
032004-10-0100:00:0007:56
(所影响的行数为5行)
select[Empid]from[Employee]
得出了局:
张三
李四
王五
...
...
想要将它兼并成这类了局:
张三,李四,王五...,...
declare@svarchar(8000)
set@s=
select@s=@s+,+[Empid]from[Employee]
printstuff(@s,1,1,)
declare@sqlvarchar(2000)
set@sql=
select@sql=@sql+[Empid]+,from[Employee]
set@sql=left(@sql,len(@sql)-1)
print@sql
Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差 |
|