我想求出使用out_diao_no这个机械的人和使用这个机械人的产值我写了4条语句才能满足这个要求,能不能简化一下
 select count(in_diao_no) from table where in_diao_no='00898'
and in_date>'2008-02-01'   --计算出in_diao_no的产值 select count(out_diao_no) from table where out_diao_no='00898'  --这里不一样
and in_date>'2008-02-01'   --计算出out_diao_no的产值
 
 select distinct in_diao_drv  from table where in_diao_no='00898' 
and in_date>'2008-02-01'  --计算当in_diao_no 时 使用过这个设备的人 select distinct out_diao_drv  from table where out_diao_no='00898' 
and in_date>'2008-02-01'  --计算当out_diao_no 时 使用过这个设备的人

解决方案 »

  1.   

    select 机械人
           ,sum(case when 机械人='in_diao_no' then 1 else 0 end) in_diao_no
          ,sum(case when 机械人='out_diao_no' then 1 else 0 end) out_diao_no
    from tb
    where in_diao_no='00898' and in_date>'2008-02-01'
    group by 机械人
      

  2.   

    难道你不给出数据表结构?这样大家太难得猜测了
    结构是这样子
    table( in_diao_drv, out_diao_drv,in_diao_no,out_diao_no)?
    liangCK小梁(努力,发奋,上进!) 的答复中出现了不存在的域“机械人”,显然是因为因为楼主没有说明表的结构
      

  3.   

    小梁(努力,发奋,上进!)很可能错误地把数据域in_diao_no当成了一个字符串常量‘in_diao_no’。
      

  4.   

    或许楼主打字错误:“我想求出使用out_diao_no这个机械的人和使用这个机械人的产值 ”
    但是后面地出现了in_diao_no,out_diao_no.或许楼主地in_diao_no,out_diao_no不是字段名,而是字段xdiao_no(机械设备名称)的取值,in_diao_drv,out_diao_drv不是字段名,而是字段xdiao_drv(工人名字)的取值,那么表结构应该是这样
    table(记录序号(可有可无),xdiao_no(设备名),使用人xdiao_drv(工人))
    这样
    select xdiao_drv,xdiao_no,count(*) chanpin_产品 from table group by xdiao_no,xdiao_drv order by xdiao_no;
    按照设备排序
    然后,应用中循环取得设备xdiao_no的名称,工人名称,累加chanpin_产品直到下一条查询结果的设备xdiao_no不同时。
      

  5.   

    select in_diao_no,out_diao_no,sum(in_diao_no) as in_diao_no1,sum(out_diao_no) as out_diao_no1
    from tb
    where in_diao_no='00898' and in_date>'2008-02-01'
    group by in_diao_no,out_diao_no