select top 20 b.name as schoolname,b.name as typename, *  from Market_SellDetail a join Market_dealer b on a.etId=b.etId join Market_Seller c on a.addby=c.sellerid where a.effective=1  and a.ID not in (select top 2980 a.ID from Market_SellDetail a join Market_dealer b on a.etId=b.etId join Market_Seller c on a.addby=c.sellerid where a.effective=1  order by a.createtime desc) order by a.createtime desc 
2980是个参数,怎样建个视图

解决方案 »

  1.   

    视图不加参数的吧你可以写成存储过程,如果是sql2005 直接 top(变量)如果是sql2000就用动态语句exec
      

  2.   

    create view v_test
    as
    select b.name as schoolname,b.name as typename, a.*,c.* 
    from Market_SellDetail a 
    join Market_dealer b on a.etId=b.etId 
    join Market_Seller c on a.addby=c.sellerid 
    where not Exists 
    (select top 2980 * from(select * from Market_SellDetail MS 
    join Market_dealer MD on MS.etId=b.etId 
    join Market_Seller MSr on MS.addby=c.sellerid 
    where a.ID=MS.ID and ms.effective=a.effective))
    group by a.effective 
     
    select top 20 * from v_test where effective=1 order by a.createtime desc
    --在试图中是不支持参数的,
    --你试试这么写能不能得到你要的数据,我这没的测试数据,看不到效果