sql A表和B表横向合并

下面的图片中是A表和B表的查询结果,如图:
图片说明

这张表是最终结果,如何才能根据A表和B表实现如下的结果呢??如图:
图片说明

full join on rownum 根据rownum完全连接,然后再挨个选择 把可能为空的字段加上nvl()

添加个养老医疗工伤类型编号

select a.userid,a.userno,SUBSTRING(a.险种类型,3,2)'险种类型',isnull(a.企业金额,0) 企业金额,isnull(b.个人金额,0) 个人金额,isnull(a.企业补缴金额,0) 企业补缴金额,isnull(b.个人补缴金额,0) 个人补缴金额,isnull(a.企业补缴月份,0) 企业补缴月份,isnull(b.个人补缴月份,0) 个人补缴月份
from a , b
where SUBSTRING (a.险种类型,3,2)= SUBSTRING (b.险种类型,3,2)
and a.userid=b.userid

SELECT USERID=1,USERNO=1,险种类型='企业养老',企业金额=11,企业补缴金额=55,企业补缴月份=2,NUM=12345567
INTO #A
UNION
SELECT USERID=1,USERNO=1,险种类型='企业医疗',企业金额=22,企业补缴金额=32,企业补缴月份=3,NUM=12345567
UNION
SELECT USERID=1,USERNO=1,险种类型='企业工伤',企业金额=33,企业补缴金额=54,企业补缴月份=5,NUM=12345567

SELECT USERID=1,USERNO=1,险种类型='个人养老',个人金额=56,个人补缴金额=10,个人补缴月份=3,NUM=12345567
INTO #B
UNION
SELECT USERID=1,USERNO=1,险种类型='个人医疗',个人金额=67,个人补缴金额=12,个人补缴月份=6,NUM=12345567

SELECT USERID=ISNULL(a.USERID,B.USERID),
USERNO=ISNULL(A.USERNO,b.USERNO),
险种类型=ISNULL(RIGHT(A.险种类型,2),RIGHT(B.险种类型,2)),
a.企业金额,
个人金额=ISNULL(B.个人金额,0),
A.企业补缴金额,
个人补缴金额=ISNULL(B.个人补缴金额,0),
A.企业补缴月份,
个人补缴月份=ISNULL(B.个人补缴月份,0),
A.NUM
FROM #A a
FULL JOIN #B b
ON A.USERID=B.USERID AND RIGHT(A.险种类型,2)=R图片说明IGHT(B.险种类型,2)

select a.userid,a.userno,SUBSTRING(a.险种类型,3,2)'险种类型',isnull(a.企业金额,0) 企业金额,isnull(b.个人金额,0) 个人金额,isnull(a.企业补缴金额,0) 企业补缴金额,isnull(b.个人补缴金额,0) 个人补缴金额,isnull(a.企业补缴月份,0) 企业补缴月份,isnull(b.个人补缴月份,0) 个人补缴月份
from a , b
where SUBSTRING (a.险种类型,3,2)= SUBSTRING (b.险种类型,3,2)
and a.userid=b.userid