表1:
部门    姓名   职位
营销部  小李   经理
营销部  小张   经理
营销部  小王   职员
研发部  小郭   经理
研发部  小陈   职员
研发部  小飞   职员
研发部  小丘   职员要得到:部门    经理   职员
营销部  小李   小张
营销部  小王       
研发部  小郭   小陈
研发部         小飞
研发部         小丘这样的表怎么查询得到?我用的是Access数据表,用ADOQuest查询。

解决方案 »

  1.   

    ACCESS数据库我不是很熟悉:SELECT temp1.部门, 经理, 职员
    FROM [SELECT 部门,姓名 as 经理
    FROM 表1 where 职位='经理']. AS Temp1, [SELECT 部门,姓名 as 职员
    FROM 表1 where 职位='职员']. AS Temp2
    WHERE temp1.部门=temp2.部门;
      

  2.   

    还有一个写法:
    select temp1.部门,经理,职员 from (SELECT 部门,姓名 as 经理
    FROM 表1 where 职位='经理') as Temp1 INNER JOIN (SELECT 部门,姓名 as 职员
    FROM 表1 where 职位='职员') as Temp2 ON TEMP1.部门=temp2.部门;
      

  3.   

    INNER JOIN 能在ADOQuest+Access里用吗?
      

  4.   

    SELECT temp1.部门, 经理, 职员
    FROM [SELECT 部门,姓名 as 经理
    FROM 表1 where 职位='经理']. AS Temp1, [SELECT 部门,姓名 as 职员
    FROM 表1 where 职位='职员']. AS Temp2
    WHERE temp1.部门=temp2.部门;这种写法行不通,好像还差点什么,和我写的得出的结果一样,是个全排列。
      

  5.   

    用外联接比较好...Access支持的.不过,楼主的数据有问题吧....一个营销部有两位经理??? 那如何显示员工? 
      

  6.   

    这个语句在Access中应该不可以直接得到,
    还是在程序循环建立吧!
    如果得到下面的表可以(且每个部门只有一个经理)部门    经理   职员
    营销部  小李   小张
    营销部  小李   小王       
    研发部  小郭   小陈
    研发部  小郭   小飞
    研发部  小郭   小丘
      

  7.   

    我的目的是用FastReport来显示的,要求显示成部门    经理   职员
    营销部  小李   小张
    营销部  小王       
    合计    2人    1人部门    经理   职员
    研发部  小郭   小陈
    研发部         小飞
    研发部         小丘
    合计    1人    2人
      

  8.   

    to hqhhh(枫叶),slzzg(懒虫)  :
    你们说的那个我也能写出来,但不合要求。
      

  9.   

    以前好像见过一个方法可以消除全排列的,但我试了只能在SQLServer里用,不能用在ADO+Access里。