我想求出使用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 时 使用过这个设备的人
,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 机械人
结构是这样子
table( in_diao_drv, out_diao_drv,in_diao_no,out_diao_no)?
liangCK小梁(努力,发奋,上进!) 的答复中出现了不存在的域“机械人”,显然是因为因为楼主没有说明表的结构
但是后面地出现了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不同时。
from tb
where in_diao_no='00898' and in_date>'2008-02-01'
group by in_diao_no,out_diao_no