一个特别的多表合并问题~~~补图
如图。这是我用Union得到的一张表
现在的问题是我需要得到
Id Name appraisalId1 appraisalGrade1 appraisalId2 appraisalGrade2 appraisal3 appraisalGrade3的效果
如果是这样的话,我也会做。例如使用
select t1.ID,t1.名字,t1.考核项,t1.考核成绩,t2.考核项,t2.考核成绩 from(select ID,名字,考核项,考核成绩 from table where 考核项='1' )t1,(select ID,名字,考核项,考核成绩 from table where 考核项='2')t2
where t1.ID=t2.ID
这样就可以做到Id Name appraisalId1 appraisalGrade1 appraisalId2 appraisalGrade2的程度
但是我现在的问题是我的appraisalId的个数是不确定的。也就是说图1中张一可能还有一行是appraisalId4。那么对于某一种情况,select语句中临时表的数量就不能写死了。
哪位大侠有方法,只要让我能得到
Id Name appraisalId1 appraisalGrade1 appraisalId2 appraisalGrade2 appraisal3 appraisalGrade3的效果就可以了。
[解决办法]
try:
- SQL code
declare @sql varchar(max)select @sql=isnull(@sql+',','') +'max(case when rn='+ltrim(rn)+' then appraisalId else 0 end as [appraisalId'+ltrim(rn)+'],' +'max(case when rn='+ltrim(rn)+' then appraisalGrade else 0 end as [appraisalGrade'+ltrim(rn)+']'from(select distinct rn=row_number() over(partition by Id,Name order by getdate()) from tb) texec ('select Id,Name,'+@sql+' from tb group by Id,Name')
[解决办法]
交叉报表
存储过程行转列
[解决办法]