读书人

一个特别的多表合并有关问题~补图

发布时间: 2012-05-08 22:09:41 作者: rapoo

一个特别的多表合并问题~~~补图

如图。这是我用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')
[解决办法]
交叉报表
存储过程行转列
[解决办法]
探讨

引用:

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 w……

读书人网 >SQL Server

热点推荐