做做

yubofighting 2011-09-26 03:38:45
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yubofighting 2011-09-26
  • 打赏
  • 举报
回复

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',max(case when skill='''+skill+''' then skill end) [skill'+skill+'],
max(case when skill='''+skill+''' then proficiency end)[proficiency]' from (select * from B)t
set @sql=STUFF(@sql,1,1,'')
set @sql='select empid,ProjID,ApplicationGrp,'+@sql+' from (select a.* ,b.skill,proficiency from a left join b on a.empid = b.empid)t group by empid,ProjID,ApplicationGrp'
print @sql
exec(@sql)


我转动态一下
稻草_木偶 2011-09-26
  • 打赏
  • 举报
回复

select a.empid,a.proid,a.applicationGroup,b.skill as'skill1',b.proficiency,c.skill as 'skill2',
c.proficiency,d.skill as 'skill3',d.proficiency
from t1 a left join (select * from t2 where skill='ssas')b
on b.empid = a.empid
left join (select * from t2 where skill='ssis')c
on c.empid = a.empid
left join (select * from t2 where skill='ssrs')d
on d.empid = a.empid
chuanzhang5687 2011-09-26
  • 打赏
  • 举报
回复
create table t2
(
empid int,
skill varchar(10),
proficiency varchar(10)
)
insert into t2 values(154302,'SSAS','Novice')
insert into t2 values(154302,'SSIS','Expert')
insert into t2 values(154302,'SSRS','Learner')
create table t1
(
empid int,
proid int,
applicationGroup varchar(10)
)
insert into t1 values(154302,111111,'Retail')
insert into t1 values(154302,123456,'Pharmacy')

select empid,proid,applicationGroup,
skill1 = 'SSAS',
max(case when skill = 'SSAS' then proficiency end) as proficiency,
skill2 = 'SSIS',
max(case when skill = 'SSIS' then proficiency end) as proficiency,
skill3 = 'SSRS',
max(case when skill = 'SSRS' then proficiency end) as proficiency
from
(
select a.* ,b.skill,proficiency from t1 a left join t2 b on a.empid = b.empid
) tb
group by empid,proid,applicationGroup
/*
empid,proid,applicationGroup,skill1,proficiency,skill2,proficiency,skill3,proficiency
154302,111111,Retail,SSAS,Novice,SSIS,Expert,SSRS,Learner
154302,123456,Pharmacy,SSAS,Novice,SSIS,Expert,SSRS,Learner
警告: 聚合或其他 SET 操作消除了空值。

(2 行受影响)

NBDBA 2011-09-26
  • 打赏
  • 举报
回复
本质是行列转换,一个更乱的行列转换
-晴天 2011-09-26
  • 打赏
  • 举报
回复
想想
select a.EmpID,ProjID,a.ApplicationGrp,b.Skill,b.Proficiency from(
select *,rn=row_number()over(order by (select 1)) from t1)a inner join (
select *,rn=row_number()over(order by (select 1)) from t1)b on a.rn=b.rn
--小F-- 2011-09-26
  • 打赏
  • 举报
回复
left join 3次?
xuam 2011-09-26
  • 打赏
  • 举报
回复
看看.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧