2016-11-08 98 views
-2

我一直在试图找到一个解决方案,我的问题现在几个小时,不能拿出正确的查询。我有两张表,stocktake_scans和stocktake_items。我需要从两个表中选择数据并将它们组合在一起。我现在的查询是这样的:MySQL - 集团由UNION查询

SELECT 
a.department_description, a.sub_department_description, a.total_cost, a.total_retail, SUM(a.qty) AS qty, a.total_vat, a.vat_rate 
FROM ( 
    SELECT (CASE WHEN TRIM(IFNULL(sp.department_description, '')) = '' THEN 'N/A' ELSE sp.department_description END) AS department_description, 
    (CASE WHEN TRIM(IFNULL(sp.sub_department_description, '')) = '' THEN 'N/A' ELSE sp.sub_department_description END) AS sub_department_description, 
    SUM(sp.unit_cost_price * ss.quantity) AS total_cost, 
    SUM(sp.unit_retail_price * ss.quantity) AS total_retail, 
    sum(ss.quantity) AS qty, 
    (SUM(sp.unit_cost_price*ss.quantity)) * (sv.vat_rate/100) AS total_vat, 
    sv.vat_rate as vat_rate 
    FROM 
     stocktake_scans ss 
     INNER JOIN stocktake_products sp ON ss.stocktake_product_id = sp.stocktake_product_id 
     LEFT JOIN stocktake_vat_codes sv ON sv.vat_code = sp.vat_code AND sv.stocktake_id = '5778' 
     WHERE ss.stocktake_id = '5778' 
     GROUP BY sp.department_description, sp.sub_department_description 
    UNION ALL 
     SELECT (CASE WHEN TRIM(IFNULL(si.department_description, '')) = '' THEN 'N/A' ELSE si.department_description END) AS department_description, 
     'N/A' as sub_department_description, 
     SUM(si.unit_cost_price * si.quantity) AS total_cost, 
     SUM(si.unit_retail_price * si.quantity) AS total_retail, 
     sum(si.quantity) AS qty, 
     SUM(si.unit_cost_price * quantity)*(sv.vat_rate/100) AS total_vat, 
     sv.vat_rate as vat_rate 
     FROM stocktake_items si 
     LEFT JOIN stocktake_vat_codes sv ON sv.vat_code = si.vat_code AND sv.stocktake_id = '5778' 
     WHERE si.stocktake_id = '5778' GROUP BY si.department_description) a 
    GROUP 
     BY a.department_description, a.sub_department_description 

这并没有完全完成这项工作。我从stocktake_scans获取所有数据,然后从stocktake_items获取数据。

我得到了下面的第一个结果 Image 1

,然后在Excel文件的最后,我也得到这个

Image 2

什么是这样做的正确的方式,使这两个酒精数字显示在一个地方?

+0

见http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-添加ORDER BY a.department_description, a.sub_department_description '这是一个非常简单的sql查询 – Strawberry

+0

'这并没有完全做好这项工作。“那么应该做什么工作?向我们展示样本数据当前输出和预期输出。 –

+0

但我确实说过目前的产出和我的期望。正如我所说,我得到了两个酒精部门的结果,一个来自扫描表,另一个来自项目表。从图像上可以看出,excel文件中有两个单独的位置。我的预期结果是让他们分组在一起,以便酒类部门不重复。 – ArtleMaks

回答