用sql语句 怎样实现 相同人员的信息并排显示

用sql语句 怎样实现 相同人员的信息并排显示,每个人员的信息多少不一。
例如 有个工资项目表如下:
人员 项目
张三 基本工资
张三 岗位津贴
张三 出差补助
李四 基本工资
李四 岗位津贴
------------------------------------------------------------------
最终通过sql语句实现如下显示:
人员 项目1 项目2 项目3 项目X...
张三 基本工资 岗位津贴 出差补助 --(空)
李四 基本工资 岗位津贴 --(空) --(空)

可能项目比较多,某人员没有的项目列空值。
原表是三张

人员代码表
代码 姓名
001 张三
002 李四
00X 王五
...
-------------------------------
项目表
代码 项目
x001 基本工资
x002 岗位津贴
x003 出差补助
x004 ...
...
--------------------------------
人员项目表
代码1 代码2
001 x001
001 x002
001 x003
002 x001
002 x002
....

我用一般的sql语句
select 人员,项目
from 人员代码表 a,项目表 b, 人员项目表 c
where a.代码=c.代码1 and c.代码2=b.代码
只能实现如题问格式

创建测试表及数据

create table äººå‘˜ä»£ç è¡¨
(代码 varchar(3),
姓名 varchar(10))


create table é¡¹ç›®è¡¨
(代码 varchar(4),
项目 varchar(20))


create table äººå‘˜é¡¹ç›®è¡¨
(代码1 varchar(3),
代码2 varchar(4))
insert into äººå‘˜ä»£ç è¡¨ values ('001','张三')
insert into äººå‘˜ä»£ç è¡¨ values ('002','李四')
insert into äººå‘˜ä»£ç è¡¨ values ('00x','王五')

insert into é¡¹ç›®è¡¨ values ('x001','基本工资')
insert into é¡¹ç›®è¡¨ values ('x002','岗位津贴')
insert into é¡¹ç›®è¡¨ values ('x003','出差补助')

insert into äººå‘˜é¡¹ç›®è¡¨ values ('001','x001')
insert into äººå‘˜é¡¹ç›®è¡¨ values ('001','x002')
insert into äººå‘˜é¡¹ç›®è¡¨ values ('001','x003')
insert into äººå‘˜é¡¹ç›®è¡¨ values ('002','x001')
insert into äººå‘˜é¡¹ç›®è¡¨ values ('002','x002')

执行

declare @sql varchar(4000)
set @sql = 'select [姓名]'
select @sql = @sql + ',max(case [项目] when '''+[项目]+''' then [项目] end) as 
['+[项目]+']'
from (select distinct [项目] from [test]) as a
select @sql = @sql+' from (select a.姓名,b.项目 from äººå‘˜ä»£ç è¡¨ a,项目表 b,人员项目表 c where a.代码=c.代码1 and b.代码=c.代码2) test group by [姓名]'
exec(@sql)

结果

温馨提示:答案为网友推荐,仅供参考
大家正在搜