--sql 2005
select t.* , RANK() over(order by val desc) 排名 from
(
select m.id , m.name , isnull(sum(n.amount* n.price*0.05),0) val from sale m left join product n on m.id = n.id and convert(varchar(7),n.saledate,120) = '2011-10' group by m.id , m.name
) t
--sql 2000
select t1.* , (select count(val) from (select m.id , m.name , isnull(sum(n.amount* n.price*0.05),0) val from sale m left join product n on m.id = n.id and convert(varchar(7),n.saledate,120) = '2011-10' group by m.id , m.name) t2 where t2.val > t1.val) + 1
from (select m.id , m.name , isnull(sum(n.amount* n.price*0.05),0) val from sale m left join product n on m.id = n.id and convert(varchar(7),n.saledate,120) = '2011-10' group by m.id , m.name) t1
select a.* from
(select b.id,b.name,sum(c.amount*c.price*0.05)as bounds from sale b
left join product c on b.id=c.id where datepart(mm,aledate)=10 group by b.id,b.name)a
order by id
--sql 2005
select t.* , RANK() over(order by val desc) 排名 from
(
select m.id , m.name , isnull(sum(n.amount* n.price),0) val from sale m left join product n on m.id = n.id group by m.id , m.name
) t
--sql 2000
select t1.* , (select count(val) from (select m.id , m.name , isnull(sum(n.amount* n.price),0) val from sale m left join product n on m.id = n.id group by m.id , m.name) t2 where t2.val > t1.val) + 1
from (select m.id , m.name , isnull(sum(n.amount* n.price),0) val from sale m left join product n on m.id = n.id group by m.id , m.name) t1