select 企业代码,企业名称,
本科=count(select职工代码 from 职工 where 学历代码=(select 学历代码 from 学历) and (select学历名 from 学历)='本科'),
 专科=count(select职工代码 from 职工 where 学历代码=(select 学历代码 from 学历) and (select学历名 from 学历)='专科'),
中专=count(select职工代码 from 职工 where 学历代码=(select 学历代码 from 学历) and (select学历名 from 学历)='中专') 
 from 企业 order by 企业代码初学者,错了别笑我:(

解决方案 »

  1.   

    交叉表:参考马可的:
    http://expert.csdn.net/Expert/topic/2440/2440306.xml?temp=.6389124
      

  2.   

    交叉表问题可以参考一下CSDN出的程序杂志有一期有,如果用存贮过程做应该是不错的。
      

  3.   

    declare @e  varchar(8000)select  @e=''
    select @e=@e+',sum (case when  学历名='+ 学历名+' then 1 else  0  end ) as  ' +学历名 from   学历
    group  by 学历名
    if len(@e)>0
    begin
     
    select @e='select a.企业代码,b.企业名称 '+@e+
    'from  职工 a,企业 b,学历 c
    where a.企业代码=b.企业代码 and a.学历代码=c.学历代码
    group by a.企业代码,b.企业名称 '
    exec (@e)

    end
    else
    raiserror('无科目',16,1)
      

  4.   

    SELECT a.企业_ID, b.企业名称, 本科 = COUNT(CASE a.学历_ID WHEN 'X1' THEN X1 ELSE NULL END), 
          专科 = COUNT(CASE a.学历_ID WHEN 'X2' THEN X2 ELSE NULL END), 
          硕士 = COUNT(CASE a.学历_ID WHEN 'X3' THEN X3 ELSE NULL END)
    FROM 职工 a LEFT OUTER JOIN
          企业 b ON a.企业_ID = b.企业_ID LEFT OUTER JOIN
          学历 c ON a.学历_ID = c.学历_ID
    GROUP BY a.企业_ID, b.企业名称