超难的一个SQL题,怎么做啊

来源:百度知道 编辑:UC知道 时间:2024/06/23 17:07:54
面试中遇到这样一道题,不知道怎么做,请大家帮帮忙

原始表:
姓名 金额 日期
张三 100 1998/4/8
张三 10 1998/7/4
里斯 20.5 1999/8/9
张三 10 1999/8/7
王五 30.5 1998/1/1
刘二 22.5 2000/8/4
里斯 30 2001/8/9
赵毅 2 2002/8/4
王五 14 2000/2/21
张三 52 1999/12/9
王八 33 2005/8/9
刘二 20 2007/8/9
.....
.....

要求一个过程,输出:
姓名 1998年总金额 1999年总金额 2000年总金额 2001年总金额 2002年总金额 ......(列出所有年份) 该员工全部金额
张三 110 10 0 200 10 ..... 988
....
....(所有员工信息)

请写出该存储过程(不能建立临时表或表变量)
建表的数据也给出来吧,免得大家辛苦

create table test(姓名 varchar(10),金额 float,日期 datetime)
insert into test select '张三',100,'1998/4/8'
insert into test select '张三',10,'1998/7/4'
insert into test select '里斯',20.5,'1999/8/9'
insert into test select '张三',10,'1999/8/7'
insert into test select '王五',30.5,'1998/1/1'
in

DECLARE @sql varchar(8000)

SET                @sql = 'select 姓名 '

                             SELECT        @sql = @sql + ' , sum(case  year(日期)  when ''' + str(日期) + ''' then 金额 else 0 end) [' + str(日期) + '年总金额' + ']'

                              FROM            (SELECT D