本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[SQL问题解决]表名存在其他表时获取数据
麦林 发表于 2008-12-19 16:41:55

 table中存储着其他表的名称,通过select表table同时调出其他表的信息,如:    table  A               B     table_1         a     table_2         b         table_1  A     1         table_2  A     2         结果要求得到table_1和table_2中A字段的最大值   table.B       C     a             1     b             2   --示例数据     create   table   [table](A   sysname,B   varchar(10))     insert   [table]   select   'table_1','a'     union     all           select   'table_2','b'         create   table   table_1(A   int)     insert   table_1   select   1     union     all           select   2         create   table   table_2(A   int)     insert   table_2   select   3     union     all           select   4     go         --动态sql     declare   @s   varchar(8000)     set   @s=''     select   @s=@s+'   when   '''+A+'''   then(select   max(A)   from   ['+A+'])'     from   [table]   group   by   A     exec('select B,C=case A'+ @s +'  end   from   [table]')     go         --删除测试     drop   table   [table],table_1,table_2         /*--测试结果         B                     C                           ----------   -----------       a                     2     b                     4     --*/ OtherDemo:表APList存在其他表的EntityID和ID,DataEntity:实体表,获取Billnodeclare @s varchar(8000)set @s = ''select @s = @s + ' when ID = ''' + Convert(varchar(4),a.ID) + ''' then (select billno from ['+ b.TableName + '] where ID = '+ Convert(varchar(4),RefID) + ')' from ARList a left join DataEntity b on a.EntityID = b.EntityIDselect @sexec('select ID,SourceObject = case '+ @s + ' else '' '' end  from ARlist')Ps:可能长度不够用 declare @s varchar(8000)set @s = ''select @s = @s + 'when EntityID = ''' + Convert(varchar(12),a.EntityID) + ''' then (select billno from ['+ b.TableName + '] where ID = RefID) ' from (select Distinct entityID from ARList) a left join DataEntity b on a.EntityID = b.EntityID select @sexec('select ID,SourceObject = case '+ @s + ' else '' '' end  from ARlist')Ps:改变语句即可(要判断@s长度是否大于0,也许是空数据呢)

阅读全文(5119) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 

The Neurotic Fishbowl

.: 公告

fighting for the work!


Bloginess

«July 2020»
1234
567891011
12131415161718
19202122232425
262728293031

.: 我的分类(专题)

首页(449)
文字感悟(103)
学习公共库(61)
生活体会(100)
资源收集(14)
.NET-Winform(27)
音乐文字(15)
心情小记(119)
SQL问题解决(10)


In the Bowl

.: 最新日志

C#打印代码
你看到的我是蓝色的
即将逝去的3月
这个假期
两个月过去
表名存在其他表时获取数据
条码打印
Remoting的用法
INI文件用法


.: 最新回复

回复:条码打印
回复:条码打印
回复:即将逝去的3月
回复:cookie对象使用
回复:条码打印
回复:JSP学习(字符串比较)
回复:应收应付核销规则及常见问题(续)
回复:两个月过去
回复:两个月过去


The Fishkeeper
blog名称:栗色?蓝色?
日志总数:449
评论数量:201
留言数量:37
访问次数:2160431
建立时间:2006年5月16日



Text Me

.: 留言板

签写新留言

链接完成
回:loseVC
来喽~
转转......
新年啦
对自己说
祝福
回:佑手
WO


Other Fish in the Sea

.: 链接


loseVC's BLOG
Collapsar_feel
布衣加针
C#and.Net
Kinogam Web




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.031 second(s), page refreshed 144423060 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号