• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

SYBAES ASE 12.0 上一个横表转纵表的简单例子

发布: 2007-7-02 11:08 | 作者: admin | 来源: | 查看: 12次 | 进入软件测试论坛讨论

领测软件测试网 SYBAES ASE 12.0 上一个横表转纵表的简单例子   千千如梦 2002年10月   /* create table ... */create table #dest_table(                         Flag char(1),                         A int null,                         B int null,                         C int null,                         D int null,                         E int null                        )go/* Flag 可以是一个或多个字段;但 Flag 须能建立 unique index */create unique index idx_PRK on #dest_table (Flag)gocreate table #mid_table(                         Flag char(1),                         Item char(1),                         Num int                        )go/* Flag 可以是一个或多个字段;但 Flag 与 Item 能建立 unique index */create unique index idx_PRK on #mid_table (Flag,Item)go/* init data ... */insert #mid_table values (@#a@#,@#A@#,100)insert #mid_table values (@#a@#,@#B@#,200)insert #mid_table values (@#a@#,@#C@#,300)insert #mid_table values (@#a@#,@#D@#,400)insert #mid_table values (@#a@#,@#E@#,500)goinsert #mid_table values (@#b@#,@#A@#,10)insert #mid_table values (@#b@#,@#B@#,20)insert #mid_table values (@#b@#,@#C@#,30)insert #mid_table values (@#b@#,@#D@#,40)insert #mid_table values (@#b@#,@#E@#,50)goinsert #mid_table values (@#c@#,@#A@#,9)insert #mid_table values (@#c@#,@#B@#,8)insert #mid_table values (@#c@#,@#D@#,6)insert #mid_table values (@#c@#,@#E@#,5)goinsert #mid_table values (@#x@#,@#A@#,22)godeclare cur_name cursor for select Flag,Item,Num from #mid_table for read onlygo/* cursor var ... */declare @flag char(1) declare @item char(1) declare @num int/* other var ... */declare @sql_text char(255)declare @col_char char(1)open cur_namefetch cur_name into @flag,@item,@numwhile (@@sqlstatus=0)begin    /* 注意 #mid_table 与 #dest_table 字段间的对应逻辑 */   /* 此处可执行一个很复杂的转换 */    select @col_char=@item      if not exists (select 1                   from #dest_table                  where Flag=@flag                 )      begin         select @sql_text= "insert #dest_table (Flag,"                          +@col_char+") values(@#"                          +@flag+"@#,"+                          +convert(char(10),@num)+")"         /* 调试时可将 select @sql_text 打开;exec (@sql_text) 屏蔽 */         --select @sql_text          exec (@sql_text)       end    else      begin         select @sql_text= "update #dest_table set "                          +@col_char+"="                          +convert(char(10),@num)                          +" where Flag=@#"+@flag+"@#"         --select @sql_text          exec (@sql_text)       end   /* 偶往前游啊游~~~~~~ */    fetch cur_name into @flag,@item,@numendgoclose cur_namegodeallocate cursor cur_namegoselect * from #mid_tablegoselect * from #dest_tablego

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网