2012-02-20 81 views
0

这是我的查询,需要在SQL查询

select a.nvrEquipment as [Equiment Name],a.Availability,b.Breakdown,c.Idle from 
(select nvrEquipment,sum(fltQuantity) as [Availability] from tblEquipment 
where intstatus in(1,2,3) group by nvrEquipment) a left join 
(select nvrEquipment,sum(fltQuantity) as [Breakdown] from tblEquipment 
where intstatus = 2 group by nvrEquipment) b on a.nvrEquipment=b.nvrEquipment left join 
(select nvrEquipment,sum(fltQuantity) as [Idle] from tblEquipment 
where intstatus = 3 group by nvrEquipment) c on a.nvrEquipment=c.nvrEquipment 

我需要的另一列利用的%:

公式为:

Utilization in % = (Breakdown + Idle)/Avalilability * 100

Equiment Name Availability  Breakdown Idle Utilization 
Crane   3    1   1 
+0

数据类型的可用性,细目,空闲是整数? – 2012-02-20 08:04:42

回答

1

似乎很简单:

select a.nvrEquipment as [Equiment Name],a.Availability,b.Breakdown,c.Idle, 
(b.Breakdown + c.Idle) * 100/NULLIF(a.Availability, 0) as Utilization 
from 
(select nvrEquipment,sum(fltQuantity) as [Availability] from tblEquipment 
where intstatus in(1,2,3) group by nvrEquipment) a left join 
(select nvrEquipment,sum(fltQuantity) as [Breakdown] from tblEquipment 
where intstatus = 2 group by nvrEquipment) b on a.nvrEquipment=b.nvrEquipment left join 
(select nvrEquipment,sum(fltQuantity) as [Idle] from tblEquipment 
where intstatus = 3 group by nvrEquipment) c on a.nvrEquipment=c.nvrEquipment 
  • 如果有的话,我在分割之前相乘以消除INTEGER舍入。
  • 我用NULLIF来处理除零。