日期:2014-05-18  浏览次数:20466 次

关于交插表的小问题,求助一下下。。。
表A

P_CD,M_A   二个字段

表B

USER_CD,RIQI,P_CD三个字段

二个表的结合条件是   表A.P_CD   =   表B.P_CD
-------------------------------------------------------
如何得到:
                    RIQI1,RIQI2,RIQI3......
USER_CD1     M_A1     M_A2     M_A3   ......
USER_CD2     M_A1     M_A2     M_A3   ......
USER_CD3     M_A1     M_A2     M_A3   ......
.                     .           .           .              
.                     .           .           .              
.                     .           .           .              


感谢!

------解决方案--------------------
--生成一个临时表
select b.user_cd,b.riqi,a.m_a into tmp from a,b where a.p_cd=b.p_cd
--动态SQL
declare @sql varchar(8000)
set @sql = 'select user_cd '
select @sql = @sql + ' , max(case px when ' ' ' + cast(px as varchar) + ' ' ' then m_a end) [riqi ' + cast(px as varchar) + '] '
from (select distinct px from (select px=(select count(1) from tmp where user_cd=t.user_cd and riqi <t.riqi)+1 , * from tmp t) m) as a
set @sql = @sql + ' from (select px=(select count(1) from tmp where user_cd=t.user_cd and riqi <t.riqi)+1 , * from tmp t) m group by user_cd '
exec(@sql)