2012-09-14 19 views
-1

我有这个MySQL查询返回某个Product_ID销售的细分。在单个SELECT中使用多个SUM,如foreach循环或CASE

我想展开此查询以包含多个Product_ID。

继承人我有什么,让我1个PRODUCT_ID:

SELECT 
o.Customer_ID, o.CompanyName, cg.Category, o.Order_ID, 
SUM(old.LineTotal) as TOTAL, 
SUM(old.qty) as PID, 
COUNT(o.Order_ID) as OIDs 

FROM Orders o 
LEFT JOIN Order_LineDetails old ON old.Order_ID = o.Order_ID 
LEFT JOIN CustomerDetails cd ON o.Customer_ID = cd.Customer_ID 
LEFT JOIN _CustomerCategory cg ON cg.Category_ID = cd.Category_ID 

WHERE o.IsPENDING = 0 
AND o.OrderPlaceServerTime >= '2012-1-1' 
AND o.OrderPlaceServerTime <= '2012-9-1' 
AND o.IsVOID = 0 
AND old.Product_ID = '56789' 

GROUP BY o.Customer_ID 
ORDER BY TOTAL DESC 
LIMIT 10 

我想补充的财产以后做多1 PRODUCT_ID,并让他们的总和为好。

这是我正在看的想法,但obviosley这不起作用。

(CASE WHEN old.Product_ID = '56789' 
     SUM(old.LineTotal) as TOTAL_56789, 
     SUM(old.qty) as PID_56789) 

这会根据我以后的产品数量来重复。

这很有道理。

有什么建议吗?

编辑::

这是我想要回来的一个例子。

enter image description here

+0

可以给总和预期结果吗? –

+0

添加了预期的结果,对不起,我忘了。 – Monty

+0

@Monty这可能可以通过准备语句和模拟'PIVOT'来完成,但是您应该发布表格的表格结构以及每个表格的一些示例数据,这样就可以获得更清晰的图片。或者更好的是用表格和数据创建一个[SQL Fiddle](http://sqlfiddle.com/)。 – Taryn

回答