2013-03-25 61 views
2

从蜂巢的总和,我想从简单的表看起来以下蜂巢:无法获取不同类别

custername Prjtid Hours Billable_Status 

ABC   AB123 10  Billable 

ABC   AB123 20  Non-Billable 

ABC   AC123 10  Billable 

ABC   AB123 30  Billable 

PQR   PQ123 20  Billable 

PQR   PQ123 30  Billable 

PQR   PQ123 20  Non-Billable 

现在我想显示类似的结果,

Custername, Prjtid, (Total number of billable), (total number of non-billable).

实施例:

ABC, AB123, 40, 20

PQR, PQ123, 50, 20

我能够获得收费或不收费但不在一起。

任何人都可以请建议如何继续这种情况?

问候,

拉吉

回答

2

集团通过应该给你需要的东西:

SELECT Custername, Prjtid, 
SUM(CASE WHEN Billable_Status = 'Billable' THEN Hours ELSE 0 END), 
SUM(CASE WHEN Billable_Status = 'Non-Billable' THEN Hours ELSE 0 END) 
FROM table 
GROUP BY Custername,Prjtid; 
+0

按列删除不需要的组以获得答案! – 2013-03-25 12:15:27

+0

嗯,你错了。改变之后会出现SemanticException!如果不包含在组中,则不能显示没有聚合函数的字段:/。 – www 2013-03-25 13:00:09

+0

Ohh,对不起,我已经用MySql测试过了,请回滚,并添加了'o'而不是'0'。 – 2013-03-25 13:03:19

0

可能被关闭的话题,但与MySQL以下工作,

SELECT a.custername,a.Prjtid,a.billable_hours AS Billable ,b.not_billable_hours AS NonBillable FROM( SELECT custername,Prjtid,总和(小时)AS billable_hours FROM表WHERE Billable_Status = '可结算' GROUP BY custername)为A,(SELECT custername,Prjtid,总和(小时)AS not_billable_hours FROM表WHERE 状态='非Billable'GROUP BY custername)AS b WHERE a.custername = b.custername;