简化:
table1表中有数据格式如下:frompage  (无重复值)         
-----------------------------
www.baidu.com        
bbs.sports.tom.com   
bbs.5460.net         table2中有数据如下:
sessionid  (存在重复)
-----------------------------
shi3si3
d7hhju9
dhghi90
下面的游标实现字符串拼接:
elect sessionid from table2 where frompage like ‘www.baidu.com’  
union all  
select sessionid from table2 where frompage like ‘bbs.sports.tom.com‘ 
union all  
select sessionid from table2 where frompage like ‘bbs.5460.net’
-----------------------------------------
基本的语句如下:declare @cur_col varchar(30) declare @sql varchar(8000)
set @sql=''
declare cur_col cursor forselect distinct frompage from table1 --将table1中的frompage独个赋cur_col 
order by frompage
open cur_colfetch next from cur_col into @cur_col  while @@fetch_status = 0 begin   
set @sql=@sql+' select sessionid from table2 where frompage like ' + @cur_col + ' union all '  --这里怎么实现’bbs.sports.tom.com‘而不是bbs.sports.tom.com而已??fetch next from cur_col into @cur_col   endset @sql=substring(@sql, 1, case when len(@sql)-10 < 0 then 0 else len(@sql)-10 end)print @sql
exec (@sql)
close cur_col
deallocate cur_col
go总个语句可以这样实现吗?请教?谢谢!

解决方案 »

  1.   

    是否用游表值得商榷--这里怎么实现’bbs.sports.tom.com‘而不是bbs.sports.tom.com而已??set @sql=@sql+' select sessionid from table2 where frompage like ' + @cur_col + ' union all '
    改為:
    set @sql=@sql+' select '''+sessionid+''' from table2 where frompage like ' + @cur_col + ' union all '
      

  2.   

    具体的需求:
    表table1中有字段:
    sessionid     frompage
    ------------------------
    shi3si3       www.baidu.com        
    d7hhju9       bbs.sports.tom.com   
    dhghi90       bbs.5460.net  我想得到如下数据格式:
    frompage         frompages    sessionids
    -----------------------------------------
    www.baidu.com      55          44    
    bbs.sports.tom.com  54         45
    bbs.5460.net       45          34
      
    也就是对有相同frompage的记录进行汇总并生成frompages(按DESC排序),
    而对排序后的frompage,对应的汇总出sessionids;我的做法是先将排序好frompage并得到frompages排序结果,
    然后根据排序好的frompage汇总sessionids;
    也就是由
    select  * into #tt from (select 
    frompage,(case when pageid is null then rtrim(count(*))else frompage end) as pageviewsfrom table1group by 
     frompage,pageid with rolluphaving 
    grouping(frompage)=0 
    )a 
    得到
    frompage         frompages
    --------------------------
    www.baidu.com 5696
    bbs.sports.tom.com 3077
    bbs.5460.net 1733然后用游标进行sessionids的汇总,最后想得到的结果就是frompage         frompages     sessionids
    -----------------------------------------
    www.baidu.com 5696          5444
    bbs.sports.tom.com 3077          2322
    bbs.5460.net 1733          223
      

  3.   

    sessionid     frompage
    ------------------------
    shi3si3       www.baidu.com        
    d7hhju9       bbs.sports.tom.com   
    dhghi90       bbs.5460.net
    就凭这数据能得到下面这种数据?frompage         frompages     sessionids
    -----------------------------------------
    www.baidu.com 5696          5444
    bbs.sports.tom.com 3077          2322
    bbs.5460.net 1733          223看不懂了汇总数据从哪里来的
      

  4.   

    不好意思,原先的table1表中有pageid的字段,就是pageid    frompage         frompages
    -----------------------------------------
    44     www.baidu.com 5696
    23     bbs.sports.tom.com 3077
    22     bbs.5460.net 1733
      

  5.   

    原始 的table1表中有:
    sessionid   pageid   frompage
      

  6.   

    简单的说就是:
    先对字段frompage进行一个汇总排序,只要frompage相同就相加(grouping(frompage)=0);
    然后根据汇总排序后的结果再一次对session进行汇总,汇总的依据是由之前排序结果frompage;
      

  7.   

    对session进行汇总的sessionids怎么来的?
      

  8.   

    原始 的table1表中有:
    sessionid   pageid   frompage
    ----------------------------------
    dfre433ed     556       www.baidu.com   
    d45f45434     343       bbs.sports.tom.com
    fg5h56y5y     878       bbs.5460.net 我的做法是先将排序好frompage并得到frompages排序结果,
    然后根据排序好的frompage汇总sessionids;
    也就是由
    select  * into #tt from (select 
    frompage,(case when pageid is null then rtrim(count(*))else frompage end) as pageviewsfrom table1group by 
     frompage,pageid with rolluphaving 
    grouping(frompage)=0 
    )a 
    得到
    frompage         frompages
    --------------------------
    www.baidu.com 5696
    bbs.sports.tom.com 3077
    bbs.5460.net 1733然后用游标进行sessionids的汇总,最后想得到的结果就是frompage         frompages     sessionids
    -----------------------------------------
    www.baidu.com 5696          5444
    bbs.sports.tom.com 3077          2322
    bbs.5460.net 1733          223
      

  9.   

    对session进行汇总的sessionids怎么来的?TO:tntzbzc(华裔大魔王—抗日要从娃娃抓起)
    我就是想通过游标得到这个sessionids!!!
    这个就是问题所在,谢谢
      

  10.   

    select  * into #tt from (select 
    frompage,(case when pageid is null then rtrim(count(*))else frompage end) as pageviewsfrom table1group by 
     frompage,pageid with rolluphaving 
    grouping(frompage)=0 
    )a where pageviews not like '%.%'select * from #tt
    order by cast(pageviews as int) descdrop table #tt我想在上面对frompage的汇总排序中一起得到sessionids的结果
    但是好象行不通!