select A.linkid,A.hot,B.id,B.len,count(1)*1.0/4 as 结果 into table2010
from jamlinks201007 A left join Linkgroupbyring B
on A.linkid=B.linkid
where A.data in('20100701','20100705')
group by A.linkid,A.hot,B.len,B.id
having count(1)*1.0/4>0.1各位看官,你看哦,上面这一句SQL我写好了,是对的,得到下表:编号 hot 区域 长度 属性
17004 0 112 49.6295008777284 0.500000
22044 0 113 777.646389288057 0.250000
11323 2 113 427.394712578715 0.250000
18527 1 113 21.2343958322971 0.500000
27735 0 112 315.116703496882 0.250000
15831 0 112 68.8638739609707 0.500000
19326 0 207 405.893991414224 0.500000
27470 2 207 951.585967187522 0.500000
24011 1 112 21.7653456018986 0.500000
------------------------------------------------------------然后能为了得到下表,我寻思着,应该上面查出来的数据新建一个表撒?
对吧,于是你看我上面的SQL里面有一句into对吧要求查询出来,然后把相同区域的长度值全部相加,得到下面这个表于是我可以用SQL select id,sum(len) from table2010 group by id区域 总长度   
112 xxxxxxxxxxxxxxxx 
113 xxxxxxxxxxxxxxxx 
207 xxxxxxxxxxxxxxxx 就得到了但是我郁闷啊~~~~~~~~为什么呢就是因为第一个SQL里面的into,我不想每次用户他们点击什么什么东西,都要into一次,因为第一次已经INTO了呀!对吧
唉~~~~~~~~~~~咋办呢咋办呢?求解~~~~~~~~~~~~~~~要解决哦

解决方案 »

  1.   

    select id,sum(len) from (你那一串去掉into的) group by id
      

  2.   

    看来楼主还是没有学透 SQL 啊。除了要掌握一般查询语句之外(这里是指对用户数据库操作),还要学会对系统对象(系统存储过程和系统表等)操作。
      

  3.   

    先判断表是否存在。如不存在则 Into 
    写拼装语句吧 
      

  4.   

    declare @F编号 varchar(50)
    set @F编号=''
    select @F编号=编号 from table2010 where 编号=?(要检查的用户的编号)
    if @F编号=''
    begin
         return -1
    end 
      

  5.   

    select id,sum(len) from (
    select A.linkid,A.hot,B.id,B.len,count(1)*1.0/4 as 结果
    from jamlinks201007 A left join Linkgroupbyring B
    on A.linkid=B.linkid
    where A.data in('20100701','20100705')
    group by A.linkid,A.hot,B.len,B.id
    having count(1)*1.0/4>0.1
    ) t group by id