COPMA客户基本资料表;CMSMV业务员基本资料表;COP01客户销货明细表
SELECT CMSMV.MV002 ,COPMA.MA002 ,SUM(COP01.TH013) as COP01TH013
FROM COP01 Left JOIN CMSMV
On CMSMV.MV001=COP01.TG006
Left JOIN COPMA
On COPMA.MA001=COP01.TG004
GROUP BY CMSMV.MV002,COPMA.MA002
ORDER BY CMSMV.MV002,SUM(COP01.TH013) DESC
通过上面的SQL语句得到下面结果:
-------------------------------
业务员 客户名称 销售金额
张三 A 60000
张三 B 55000
张三 C 50000
张三 D 49000
张三 E 46000
张三 F 43000
张三 G 35000
李四 GG 9000
李四 HH 1000
-------------------------------
请如何只显示业务员销售额前五名的客户
想得到结果
-------------------------------
业务员 客户名称 销售金额
张三 A 60000
张三 B 55000
张三 C 50000
张三 D 49000
张三 E 46000
李四 GG 9000
李四 HH 1000
-------------------------------
谢谢
------解决方案--------------------
select top 5 *
from (
SELECT CMSMV.MV002 ,COPMA.MA002 ,SUM(COP01.TH013) as COP01TH013
FROM COP01 Left JOIN CMSMV
On CMSMV.MV001=COP01.TG006
Left JOIN COPMA
On COPMA.MA001=COP01.TG004
GROUP BY CMSMV.MV002,COPMA.MA002 )a
ORDER BY MV002,COP01TH013 DESC
------解决方案--------------------
加一个top 5 就可以了:
SELECT top 5 CMSMV.MV002 ,COPMA.MA002 ,SUM(COP01.TH013) as COP01TH013
FROM COP01 Left JOIN CMSMV
On CMSMV.MV001=COP01.TG006
Left JOIN COPMA
On COPMA.MA001=COP01.TG004
GROUP BY CMSMV.MV002,COPMA.MA002
ORDER BY CMSMV.MV002,COP01TH013 DESC
------解决方案--------------------
sqlserver版本多少?回复请引用
------解决方案--------------------
你试试,适合2005及以后的版本:
select *
from
(
select *,
ROW_NUMBER() over(partition by MV002 order by COP01TH013 desc) as rownum
from
(
SELECT CMSMV.MV002 ,COPMA.MA002 ,SUM(COP01.TH013) as COP01TH013,
FROM COP01 Left JOIN CMSMV
On CMSMV.MV001=COP01.TG006
Left JOIN COPMA
On COPMA.MA001=COP01.TG004
GROUP BY CMSMV.MV002,COPMA.MA002
)t
)t
where rownum <= 5
------解决方案--------------------
SELECT MV002 ,
MA002 ,
COP01TH013
FROM ( SELECT MV002 ,
MA002 ,
COP01TH013 ,
ROW_NUMBER() OVER ( PARTITION BY MV002 ORDER BY COP01TH013 DESC ) id