日期:2014-05-17 浏览次数:20670 次
declare @str varchar(max) set @str='2010,2011,2012' create table #a ( name varchar(255) ) declare @s varchar(max) set @s='insert #a select '+''''+REPLACE(@str,',',''''+' union all select '+'''')+'''' --print @s exec(@s) declare @sql varchar(max) set @sql='' select @sql=@sql+' '+'sum(isnull('+name+',0))'+' '+name from #a print @sql /* sum(isnull(2010,0)) 2010 sum(isnull(2011,0)) 2011 sum(isnull(2012,0)) 2012 */
------解决方案--------------------
declare @str varchar(max) set @str='2010,2011,2012' create table #a ( name varchar(255) ) declare @s varchar(max) set @s='insert #a select '+''''+REPLACE(@str,',',''''+' union all select '+'''')+'''' --print @s exec(@s) declare @sql varchar(max) set @sql='' select @sql=@sql+','+'sum(isnull('+name+',0))'+' '+name from #a select @sql=right(@sql,len(@sql)-1) print @sql /* sum(isnull(2010,0)) 2010,sum(isnull(2011,0)) 2011,sum(isnull(2012,0)) 2012 */
------解决方案--------------------
你的功底怎么几乎为零 啊,删除表是drop table 啊,#这种开头的临时表正常情况下会自动删除,但是作为实践经验,最好用完手动删除。#是作用在一个【会话】当中,也可以理解为一个链接。或者你在SQLServer Management studio里面新建的一个窗口等等。
------解决方案--------------------
遇到问题时,首先多查查联机丛书,你才会有进步,比如删除表,你打开联机丛书,然后在左下方选【索引】选项卡,然后输入:删除表 就有结果了。
------解决方案--------------------
不能说访问,应该是连接,因为一个连接可能会发起多个操作。都会对数据库做访问。
------解决方案--------------------
我觉得你还是先理解这个方法吧。你的基础搞太多反而会乱掉。
------解决方案--------------------
那就熟练应用吧。凭你刚才的几个问题,我大概也知道你的底子了,还是先打扎实了再算吧。我不想给个新方法你还要回复一大堆,