各位同仁:
   我有一个问题求教:
   有如下一数据表
--------------------------------------
  编号    姓名    科室     学历
  001     张三    财务     中专    
  002     李四    财务     大专    
  003     王五    商务     本科   
  004     李二    商务     大专  
  005     吴立    商务     中专
  006     钱明    设备     本科
--------------------------------------
现在我要求统计如下的结果:
--------------------------------------
  科室    中专     大专    本科 
--------------------------------------
  财务     1       1      
  商务             2        1
  设备                      1
--------------------------------------
SQL语句这样写:select 科室,
(select count(*) from table b where a.科室 = b.科室 and 学历 = '中专'),
(select count(*) from table b where a.科室 = b.科室 and 学历 = '大专'),
(select count(*) from table b where a.科室 = b.科室 and 学历 = '本科')
from table a
group by 科室我就不明白了:
1.表a,表b各代表哪个表啊?
2.而且我只有一个表,那多出来的一个表怎么解决啊?
3.是不是要建立个临时表啊?
请高手多指教,谢谢!!!

解决方案 »

  1.   

    不用设,把SQL语句里的table换成你的表名就行了。
      

  2.   

    a,b都表示table表,同一个表!!!
    把SQL语句里的table换成你的表名就行了。最好这样改一下:
    select 科室,
    (select count(*) AS 中专 from table b where a.科室 = b.科室 and 学历 = '中专'),
    (select count(*) AS 大专 from table b where a.科室 = b.科室 and 学历 = '大专'),
    (select count(*) AS 本科 from table b where a.科室 = b.科室 and 学历 = '本科')
    from table a
    group by 科室
      

  3.   

    还是不对,在SQL中出错信息为:cloumn的前缀“a”,在query中的表名和别名不匹配。
      

  4.   

    你改成什么了,把你的SQL粘出来看看???