表:
日期         姓名 销售额
2007年8月5日 张三 1000 
2008年1月2日 张三 1500 
2008年1月5日 张三 150 
2005年5月1日 李四 350 
2008年1月2日 李四 5500 求2008年每个人的第一次销售额、最后一次销售额、年总销售额。格式如下:姓名  首次销售额  末次销售额  年销售总额
张三  1500        150         1650
李四  5500        5500        5500望不吝赐教!

解决方案 »

  1.   

    --> 测试数据: #T
    if object_id('tempdb.dbo.#T') is not null drop table #T
    create table #T (日期 varchar(12),姓名 nvarchar(4),销售额 int)
    insert into #T
    select '2007年8月5日','张三',1000 union all
    select '2008年1月2日','张三',1500 union all
    select '2008年1月5日','张三',150 union all
    select '2005年5月1日','李四',350 union all
    select '2008年1月2日','李四',5500select 姓名,
           (select top 1 销售额 from #T where 姓名=t.姓名 order by 日期 asc) 首期销售额,
            (select top 1 销售额 from #T where 姓名=t.姓名 order by 日期 desc) 末期销售额
    from #T as t
    group by 姓名/*
    姓名   首期销售额       末期销售额
    ---- ----------- -----------
    张三   1000        150
    李四   350         5500(2 行受影响)*/
      

  2.   

    --> 测试数据: #T
    if object_id('tempdb.dbo.#T') is not null drop table #T
    create table #T (日期 varchar(12),姓名 nvarchar(4),销售额 int)
    insert into #T
    select '2007年8月5日','张三',1000 union all
    select '2008年1月2日','张三',1500 union all
    select '2008年1月5日','张三',150 union all
    select '2005年5月1日','李四',350 union all
    select '2008年1月2日','李四',5500select 姓名,
           (select top 1 销售额 from #T where 姓名=t.姓名 order by 日期 asc) 首期销售额,
            (select top 1 销售额 from #T where 姓名=t.姓名 order by 日期 desc) 末期销售额,
            (select sum(销售额) from #T where 姓名=t.姓名) 总销售额
    from #T as t
    group by 姓名/*
    姓名   首期销售额       末期销售额       总销售额
    ---- ----------- ----------- -----------
    张三   1000        150         2650
    李四   350         5500        5850(2 行受影响)*/
      

  3.   

    create table 表(日期 nvarchar(20),姓名 nvarchar(5), 销售额 int)
    insert into 表 select '2007年8月5日','张三', 1000 
    union all select '2008年1月2日','张三', 1500 
    union all select '2008年1月5日','张三', 150 
    union all select '2005年5月1日','李四', 350 
    union all select '2008年1月2日','李四', 5500 select 姓名,
    (select top 1 销售额 from 表 where 姓名=a.姓名 and left(日期,4)='2008' order by 日期) as 首次销售额,
    (select top 1 销售额 from 表 where 姓名=a.姓名 and left(日期,4)='2008' order by 日期 desc) as 末次销售额,
    sum(销售额) as 年销售总额
    from 表 a
    where left(日期,4)='2008'
    group by 姓名
    go
    drop table 表
    /*
    姓名    首次销售额       末次销售额       年销售总额
    ----- ----------- ----------- -----------
    李四    5500        5500        5500
    张三    1500        150         1650(2 行受影响)*/
      

  4.   


    --> 测试数据: #T1
    if object_id('tempdb.dbo.#T1') is not null drop table #T1
    create table #T1 ([日期] varchar(50),[姓名] varchar(4),[销售额] int)
    insert into #T1
    select '2007年8月5日','张三',1000 union all
    select '2008年1月2日','张三',1500 union all
    select '2008年1月5日','张三',150 union all
    select '2005年5月1日','李四',350 union all
    select '2008年1月2日','李四',5500select 姓名,
           (select top 1 销售额 from #T1 where 姓名=t.姓名 order by 日期 asc) 首期销售额,
            (select top 1 销售额 from #T1 where 姓名=t.姓名 order by 日期 desc) 末期销售额,总销售额=sum(销售额)
    from #T1 as t
    group by 姓名
      

  5.   

    被 Qianjin036a 老师解决了,感谢各位高手的帮助,有几位已经帮助在下不止一次了,一并深表敬意!