表1员工姓名    销售金额    销售时间
员工A         10        2011-8-30 00:56:01
员工C         15        2011-9-1 11:56:01
员工D         20        2011-9-2 23:56:01
员工B         10        2011-9-3 11:56:01
员工C         30        2011-9-4 08:56:01
员工D         10        2011-9-6 05:56:01怎么得出9月份内每个员工销售总额,并对每个员工的销售总额排序!mssqlSELECT *
FROM 表1
WHERE (销售时间 BETWEEN '2011 - 7 - 1 00 : 00 : 00' AND '2011 - 7 - 1 23 : 59 : 59')
ORDER BY 销售金额 DESC   这个语句只能对每笔记录的"销售金额"排序,并不能按每个员工的月销售总额排序!

解决方案 »

  1.   

    --只算九月份的。
    select 员工姓名 , sum(销售金额) 销售总额 from tb where datepart(mm,销售时间) = 9 group by 员工姓名 order by 销售总额 desc--应该是算2011-09
    select 员工姓名 , sum(销售金额) 销售总额 from tb where convert(varchar(7),销售时间,120) = '2011-09' group by 员工姓名 order by 销售总额 desc
      

  2.   

    create table tb(员工姓名 varchar(10),销售金额 int,销售时间 datetime)
    insert into tb values('员工A', 10 ,'2011-8-30 00:56:01')
    insert into tb values('员工C', 15 ,'2011-9-1 11:56:01')
    insert into tb values('员工D', 20 ,'2011-9-2 23:56:01')
    insert into tb values('员工B', 10 ,'2011-9-3 11:56:01')
    insert into tb values('员工C', 30 ,'2011-9-4 08:56:01')
    insert into tb values('员工D', 10 ,'2011-9-6 05:56:01')
    go--只算九月份的。
    select 员工姓名 , sum(销售金额) 销售总额 from tb where datepart(mm,销售时间) = 9 group by 员工姓名 order by 销售总额 desc
    /*
    员工姓名       销售总额        
    ---------- ----------- 
    员工C        45
    员工D        30
    员工B        10(所影响的行数为 3 行)
    */--应该是算2011-09
    select 员工姓名 , sum(销售金额) 销售总额 from tb where convert(varchar(7),销售时间,120) = '2011-09' group by 员工姓名 order by 销售总额 desc
    /*员工姓名       销售总额        
    ---------- ----------- 
    员工C        45
    员工D        30
    员工B        10(所影响的行数为 3 行)
    */drop table tb