我有多个工会的这个查询:
select count(emp.emp_id) "No.of emp with sal above 30k" from emp,dept
where emp.emp_sal > 30000
and emp.emp_id=dept.emp_id
union
select count(emp.emp_id) "No.of emp with age above 50" from emp
where emp.emp_age < 50
and emp.emp_id=dept.emp_id
union
select count(emp.emp_id) "No.of emp doing over time" from emp
where emp.work_time > 10
and emp.emp_id=dept.emp_id`
我想将上述查询组合成单个查询,如下所示:
Select emp_id,emp_name,
case
when emp.emp_sal > 30000 then 1
when emp.emp_age < 50 then 2
when emp.work_time > 10 then 3
end
from emp,dept
where emp.emp_id=dept.emp_id`
如何在 case 语句中包含 emp_id 的计数?我想分别查看所有员工人数。
示例输出将是:
"No.of emp with sal above 30k" 200
"No.of emp with age above 50" 100
"No.of emp doing over time" 50
当我写为单选时,上述员工人数会有所不同。现在我使用不同的表进行另一次连接。例如
select count(p_id) "Sold Prod" from prod,sale
where prod.p_id=sale.p_id and sale.p_name='SAMSUNG'
union
select count(p_id) "Prod Ordered" from prod, order
where order.p_id=prod.p_id and order.order_dt > '01-Jan-2013'
上面的连接当我写为“sold Prod”的单选查询时,结果是相同的,而“prod_ordered”增加了,因为排序的 id 也存在于 sale 表中。谁能给出一些想法如何通过在单选中写入来保持相同的麻木?