联合查询按字段排序的交叉表问题
有两个表
Employee表格式如下:
id number name
1 001 张三
2 002 李四
3 003 王五
...
WageList表格式如下:
id wid serial caption value
3 1 1 CC 30
3 1 2 BB 20
3 1 3 AA 10
1 1 1 CC 40
1 1 2 BB 30
1 1 3 AA 40
2 1 1 CC 20
2 1 2 BB 50
2 1 3 AA 10
3 2 1 CC 30
...
想得到如下交叉表个格式caption位置按serial字段排序:
id number name CC BB AA ...
1 001 张三 40 40 30
2 002 李四 20 50 10
3 003 王五 30 20 10
查询条件wid=1,这个交叉查询怎么写?
------解决方案--------------------create table Employee(id int,number varchar(10),name varchar(20))
insert Employee select 1, '001 ', '张三 '
union all select 2, '002 ', '李四 '
union all select 3, '003 ', '王五 '
create table WageList(id int,wid int,serial int,caption varchar(10),value int)
insert WageList select 3,1,1, 'CC ',30
union all select 3,1,2, 'BB ',20
union all select 3,1,2, 'AA ',10
union all select 1,1,1, 'CC ',40
union all select 1,1,2, 'BB ',30
union all select 1,1,3, 'AA ',40
union all select 2,1,1, 'CC ',20
union all select 2,1,2, 'BB ',50
union all select 2,1,3, 'AA ',10
union all select 3,2,1, 'CC ',30
declare @sql varchar(8000)
set @sql = ' '
select @sql = @sql + ' ,sum(case caption when ' ' ' + caption + ' ' ' then value else 0 end) [ ' + caption + ']