请问一下,我用的是MSSQL2000或MSSQL2005
我写的是select top 20 convert(varchar,sum(convert(money,amount)),1) as amot from transrecord where transstatus=2 and ddid not in (select top 20 ddid from transrecord where transstatus=2 order by ddid desc)在这边TOP 20不能取作用。请问要怎么样写才能读到第20到40条的和
SELECT convert(varchar,sum(convert(money,b.amount)),1) as amot 
FROM(
  SELECT TOP 20 * FROM 
       (SELECT TOP 40 * FROM transrecord where transstatus=2 ) AS a 
  ORDER BY a.ddid desc) 
AS b 这样查询出来为空...
请问要怎么写SQL,谢谢大家帮忙!!

解决方案 »

  1.   

    N到M条记录(要有主索引ID)
    Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID   Desc
    求和就自己写吧
      

  2.   

    这样只是N到M条记录的记录,那求和要怎么加进去呢。如convert(varchar,sum(convert(money,b.amount)),1) as amot  
      

  3.   

    你可以把那N到M的记录做个临时表,外面再套个select语句
      

  4.   

    +1
    select count/sum 列名 as 新列名 from
    (
    Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc
    ) NewBiao
      

  5.   

    SELECT convert(varchar,sum(convert(money,b.amount)),1) as amot  
    FROM(
      SELECT TOP 20 * FROM  
      (SELECT TOP 40 * FROM transrecord where transstatus=2 ) AS a  
      ORDER BY a.ddid desc)  
    AS b这个思路应该可以的吧,只不过你里面的子查询好像不能查出第20条到第40条吧
      

  6.   

    select top 20 id from table where id in(select top 40 id from table order by id asc) order by id desc