日期:2014-05-17  浏览次数:20565 次

求SQL,跪求!
表1
WARD_NO PRO_NO EVA_LEVEL 评价人次
10206             30                A              73
10206             30                B               4
表2 
PRO_NO PRO_NAME             EVA_LEVEL LEVEL_NAME
30      您目前身体恢复情况如何? A           很好
30      您目前身体恢复情况如何? B            一般
30      您目前身体恢复情况如何? C            不好

需要得到的表为:
WARD_NO PRO_NO EVA_LEVEL 评价人次
10206             30                A              73
10206             30                B               4
10206             30                C               0

------解决方案--------------------
纠正一下:

create table #tb1(WARD_NO int,PRO_NO int,EVA_LEVEL char(1),评价人次 int)
insert into #tb1
select 10206,30,'A',73
union all select 10206,30,'B',4

create table #tb2(PRO_NO int,PRO_NAME varchar(100),EVA_LEVEL char(1),LEVEL_NAME varchar(10))
insert into #tb2
select 30,'您目前身体恢复情况如何?','A','很好'
union all select 30,'您目前身体恢复情况如何?','B','一般'
union all select 30,'您目前身体恢复情况如何?','C','不好'

select isnull(b.WARD_NO,c.WARD_NO) as WARD_NO,a.PRO_NO,a.EVA_LEVEL,ISNULL(b.评价人次,0) as 评价人次
from #tb2 a
left join #tb1 b on a.PRO_NO=b.PRO_NO and a.EVA_LEVEL=b.EVA_LEVEL
left join (select distinct WARD_NO,PRO_NO from #tb1)c on a.PRO_NO=c.PRO_NO

/*
WARD_NO PRO_NO EVA_LEVEL 评价人次
---------------------------------------
10206 30 A 73
10206 30 B 4
10206 30 C 0
*/<